add response structs
diff --git a/api.go b/api.go
index 63a9a29..d740efb 100644
--- a/api.go
+++ b/api.go
@@ -48,6 +48,84 @@
 	Type    string          `json:"type"`
 }
 
+type Attribute struct {
+	Name  string `json:"name"`
+	Value string `json:"value"`
+	kind  string `json:"kind"`
+}
+
+type ClientIdDetails struct {
+	ClientId     string      `json:"clientId"`
+	ClientSecret string      `json:"clientSecret"`
+	RedirectUris []string    `json:"redirectUris"`
+	Status       string      `json:"status"`
+	Attributes   []Attribute `json:"attributes"`
+}
+
+type DeveloperDetails struct {
+	Id             string      `json:"id"`
+	UserName       string      `json:"userName"`
+	FirstName      string      `json:"firstName"`
+	LastName       string      `json:"lastName"`
+	Email          string      `json:"email"`
+	Status         string      `json:"status"`
+	Apps           []string    `json:"apps"`
+	CreatedAt      int         `json:"createdAt"`
+	CreatedBy      string      `json:"createdBy"`
+	LastModifiedAt int         `json:"lastModifiedAt"`
+	LastModifiedBy string      `json:"lastModifiedBy"`
+	Company        string      `json:"company"`
+	Attributes     []Attribute `json:"attributes"`
+}
+
+type CompanyDetails struct {
+	Id             string      `json:"id"`
+	Name           string      `json:"name"`
+	DisplayName    string      `json:"displayName"`
+	Status         string      `json:"status"`
+	Apps           []string    `json:"apps"`
+	CreatedAt      int         `json:"createdAt"`
+	CreatedBy      string      `json:"createdBy"`
+	LastModifiedAt int         `json:"lastModifiedAt"`
+	LastModifiedBy string      `json:"lastModifiedBy"`
+	Attributes     []Attribute `json:"attributes"`
+}
+
+type AppDetails struct {
+	Id             string      `json:"id"`
+	Name           string      `json:"name"`
+	AccessType     string      `json:"accessType"`
+	CallbackUrl    string      `json:"callbackUrl"`
+	DisplayName    string      `json:"displayName"`
+	Status         string      `json:"status"`
+	ApiProducts    []string    `json:"apiProducts"`
+	AppFamily      string      `json:"appFamily"`
+	CreatedAt      int         `json:"createdAt"`
+	CreatedBy      string      `json:"createdBy"`
+	LastModifiedAt int         `json:"lastModifiedAt"`
+	LastModifiedBy string      `json:"lastModifiedBy"`
+	Company        string      `json:"company"`
+	Attributes     []Attribute `json:"attributes"`
+}
+
+type ApiProductDetails struct {
+	Id             string      `json:"id"`
+	Name           string      `json:"name"`
+	DisplayName    string      `json:"displayName"`
+	QuotaLimit     int         `json:"quotaLimit"`
+	QuotaInterval  int         `json:"quotaInterval"`
+	QuotaTimeUnit  int         `json:"quotaTimeUnit"`
+	Status         string      `json:"status"`
+	CreatedAt      int         `json:"createdAt"`
+	CreatedBy      string      `json:"createdBy"`
+	LastModifiedAt int         `json:"lastModifiedAt"`
+	LastModifiedBy string      `json:"lastModifiedBy"`
+	Company        string      `json:"company"`
+	Environments   []string    `json:"environments"`
+	ApiProxies     []string    `json:"apiProxies"`
+	Attributes     []Attribute `json:"attributes"`
+}
+
 // handle client API
 func handleRequest(w http.ResponseWriter, r *http.Request) {
 
@@ -66,9 +144,10 @@
 	}
 
 	f := r.Form
-	elems := []string{"action", "key", "uriPath", "scopeuuid"}
+	elems := []string{"action", "key", "uriPath", "organizationName", "environmentName", "apiProxyName"}
 	for _, elem := range elems {
-		if f.Get(elem) == "" {
+		if _, ok := f[elem]; !ok {
+			log.Debug("Input params Incomplete: " + elem)
 			w.WriteHeader(http.StatusBadRequest)
 			w.Write([]byte(fmt.Sprintf("Missing element: %s", elem)))
 			return
@@ -91,14 +170,16 @@
 // returns []byte to be written to client
 func verifyAPIKey(f url.Values) ([]byte, error) {
 
-	key := f.Get("key")
-	scopeuuid := f.Get("scopeuuid")
-	path := f.Get("uriPath")
 	action := f.Get("action")
+	key := f.Get("key")
+	path := f.Get("uriPath")
+	organizationName := f.Get("organizationName")
+	environmentName := f.Get("environmentName")
+	apiProxyName := f.Get("apiProxyName")
+	validateAgainstApiProxiesAndEnvs := f.Get("validateAgainstApiProxiesAndEnvs")
+	if action != "verify" {
 
-	if key == "" || scopeuuid == "" || path == "" || action != "verify" {
-		log.Debug("Input params Invalid/Incomplete")
-		reason := "Input Params Incomplete or Invalid"
+		reason := "action must be 'verify'"
 		errorCode := "INCORRECT_USER_INPUT"
 		return errorResponse(reason, errorCode)
 	}