{
  "revision": "20261008",
  "title": "Apigee API",
  "version_module": true,
  "batchPath": "batch",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "ownerDomain": "google.com",
  "parameters": {
    "alt": {
      "type": "string",
      "description": "Data format for response.",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "location": "query",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "default": "json"
    },
    "quotaUser": {
      "location": "query",
      "type": "string",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters."
    },
    "upload_protocol": {
      "location": "query",
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")."
    },
    "uploadType": {
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "type": "string",
      "location": "query"
    },
    "$.xgafv": {
      "location": "query",
      "description": "V1 error format.",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "type": "string",
      "enum": [
        "1",
        "2"
      ]
    },
    "callback": {
      "description": "JSONP",
      "location": "query",
      "type": "string"
    },
    "key": {
      "type": "string",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "location": "query"
    },
    "prettyPrint": {
      "type": "boolean",
      "location": "query",
      "default": "true",
      "description": "Returns response with indentations and line breaks."
    },
    "fields": {
      "location": "query",
      "description": "Selector specifying which fields to include in a partial response.",
      "type": "string"
    },
    "oauth_token": {
      "type": "string",
      "location": "query",
      "description": "OAuth 2.0 token for the current user."
    },
    "access_token": {
      "location": "query",
      "description": "OAuth access token.",
      "type": "string"
    }
  },
  "basePath": "",
  "servicePath": "",
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
        }
      }
    }
  },
  "resources": {
    "projects": {
      "methods": {
        "provisionOrganization": {
          "request": {
            "$ref": "GoogleCloudApigeeV1ProvisionOrganizationRequest"
          },
          "httpMethod": "POST",
          "parameters": {
            "project": {
              "description": "Required. Name of the GCP project with which to associate the Apigee organization.",
              "location": "path",
              "required": true,
              "type": "string",
              "pattern": "^projects/[^/]+$"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "description": "Provisions a new Apigee organization with a functioning runtime. This is the standard way to create trial organizations for a free Apigee trial.",
          "path": "v1/{+project}:provisionOrganization",
          "flatPath": "v1/projects/{projectsId}:provisionOrganization",
          "id": "apigee.projects.provisionOrganization",
          "parameterOrder": [
            "project"
          ],
          "response": {
            "$ref": "GoogleLongrunningOperation"
          }
        }
      }
    },
    "organizations": {
      "resources": {
        "appgroups": {
          "resources": {
            "subscriptions": {
              "methods": {
                "expire": {
                  "path": "v1/{+name}:expire",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. Name of the API product subscription. Use the following structure in your request: `organizations/{org}/appgroups/{appgroup}/subscriptions/{subscription}`",
                      "pattern": "^organizations/[^/]+/appgroups/[^/]+/subscriptions/[^/]+$"
                    }
                  },
                  "id": "apigee.organizations.appgroups.subscriptions.expire",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1AppGroupSubscription"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/subscriptions/{subscriptionsId}:expire",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1ExpireAppGroupSubscriptionRequest"
                  },
                  "description": "Expires an API product subscription immediately.",
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "list": {
                  "httpMethod": "GET",
                  "parameters": {
                    "pageSize": {
                      "description": "Optional. The maximum number of subscriptions to return. The service may return fewer than this value. If unspecified, at most 100 subscriptions will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    },
                    "pageToken": {
                      "type": "string",
                      "description": "Optional. A page token, received from a previous `ListAppGroupSubscriptions` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListAppGroupSubscriptions` must match the call that provided the page token.",
                      "location": "query"
                    },
                    "parent": {
                      "pattern": "^organizations/[^/]+/appgroups/[^/]+$",
                      "type": "string",
                      "description": "Required. Name of the appgroup. Use the following structure in your request: `organizations/{org}/appgroups/{appgroup}`",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "description": "List all api product subscriptions for an appgroup.",
                  "path": "v1/{+parent}/subscriptions",
                  "id": "apigee.organizations.appgroups.subscriptions.list",
                  "parameterOrder": [
                    "parent"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/subscriptions",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListAppGroupSubscriptionsResponse"
                  }
                },
                "create": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "parent"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1AppGroupSubscription"
                  },
                  "description": "Creates a subscription to an API product. ",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1AppGroupSubscription"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/subscriptions",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. Name of the appgroup that is purchasing a subscription to the API product. Use the following structure in your request: `organizations/{org}/appgroups/{appgroup}`",
                      "required": true,
                      "pattern": "^organizations/[^/]+/appgroups/[^/]+$",
                      "location": "path",
                      "type": "string"
                    }
                  },
                  "id": "apigee.organizations.appgroups.subscriptions.create",
                  "path": "v1/{+parent}/subscriptions"
                },
                "get": {
                  "description": "Get an api product subscription for an appgroup.",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1AppGroupSubscription"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/subscriptions/{subscriptionsId}",
                  "id": "apigee.organizations.appgroups.subscriptions.get",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/appgroups/[^/]+/subscriptions/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. The name of the AppGroupSubscription to retrieve. Format: `organizations/{org}/appgroups/{appgroup}/subscriptions/{subscription}`"
                    }
                  }
                }
              }
            },
            "apps": {
              "methods": {
                "create": {
                  "id": "apigee.organizations.appgroups.apps.create",
                  "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1AppGroupApp"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "location": "path",
                      "type": "string",
                      "required": true,
                      "pattern": "^organizations/[^/]+/appgroups/[^/]+$",
                      "description": "Required. Name of the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}`"
                    }
                  },
                  "path": "v1/{+parent}/apps",
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1AppGroupApp"
                  },
                  "description": "Creates an app and associates it with an AppGroup. This API associates the AppGroup app with the specified API product and auto-generates an API key for the app to use in calls to API proxies inside that API product. The `name` is the unique ID of the app that you can use in API calls."
                },
                "delete": {
                  "id": "apigee.organizations.appgroups.apps.delete",
                  "description": "Deletes an AppGroup app. **Note**: The delete operation is asynchronous. The AppGroup app is deleted immediately, but its associated resources, such as app keys or access tokens, may take anywhere from a few seconds to a few minutes to be deleted.",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+$",
                      "required": true,
                      "type": "string",
                      "description": "Required. Name of the AppGroup app. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}`"
                    }
                  },
                  "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1AppGroupApp"
                  }
                },
                "list": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListAppGroupAppsResponse"
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps",
                  "description": "Lists all apps created by an AppGroup in an Apigee organization. Optionally, you can request an expanded view of the AppGroup apps. Lists all AppGroupApps in an AppGroup. A maximum of 1000 AppGroup apps are returned in the response if PageSize is not specified, or if the PageSize is greater than 1000.",
                  "httpMethod": "GET",
                  "parameters": {
                    "pageToken": {
                      "description": "Optional. Page token. If provides, must be a valid AppGroup app returned from a previous call that can be used to retrieve the next page.",
                      "location": "query",
                      "type": "string"
                    },
                    "pageSize": {
                      "location": "query",
                      "description": "Optional. Maximum number entries to return. If unspecified, at most 1000 entries will be returned.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "parent": {
                      "description": "Required. Name of the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}`",
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "pattern": "^organizations/[^/]+/appgroups/[^/]+$"
                    }
                  },
                  "id": "apigee.organizations.appgroups.apps.list",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+parent}/apps"
                },
                "update": {
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1AppGroupApp"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "PUT",
                  "parameters": {
                    "name": {
                      "required": true,
                      "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+$",
                      "location": "path",
                      "type": "string",
                      "description": "Required. Name of the AppGroup app. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}`"
                    },
                    "action": {
                      "description": "Approve or revoke the consumer key by setting this value to `approve` or `revoke`. The `Content-Type` header must be set to `application/octet-stream`, with empty body.",
                      "type": "string",
                      "location": "query"
                    }
                  },
                  "description": "Updates the details for an AppGroup app. In addition, you can add an API product to an AppGroup app and automatically generate an API key for the app to use when calling APIs in the API product. If you want to use an existing API key for the API product, add the API product to the API key using the UpdateAppGroupAppKey API. Using this API, you cannot update the app name, as it is the primary key used to identify the app and cannot be changed. This API replaces the existing attributes with those specified in the request. Include or exclude any existing attributes that you want to retain or delete, respectively. **Note:** We recommend that you avoid making concurrent update requests for the same resource. Near-simultaneous writes to the same entity can result in conflicts and unexpected behavior. Ensure operations are sequential when modifying a single resource.",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1AppGroupApp"
                  },
                  "path": "v1/{+name}",
                  "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}",
                  "id": "apigee.organizations.appgroups.apps.update"
                },
                "get": {
                  "description": "Returns the details for an AppGroup app.",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1AppGroupApp"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}",
                  "path": "v1/{+name}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+$",
                      "description": "Required. Name of the AppGroup app. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}`",
                      "location": "path",
                      "type": "string",
                      "required": true
                    }
                  },
                  "id": "apigee.organizations.appgroups.apps.get",
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                }
              },
              "resources": {
                "keys": {
                  "methods": {
                    "create": {
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1AppGroupAppKey"
                      },
                      "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}/keys",
                      "httpMethod": "POST",
                      "parameters": {
                        "parent": {
                          "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+$",
                          "type": "string",
                          "description": "Required. Parent of the AppGroup app key. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys`",
                          "required": true,
                          "location": "path"
                        }
                      },
                      "path": "v1/{+parent}/keys",
                      "description": "Creates a custom consumer key and secret for a AppGroup app. This is particularly useful if you want to migrate existing consumer keys and secrets to Apigee from another system. Consumer keys and secrets can contain letters, numbers, underscores, and hyphens. No other special characters are allowed. To avoid service disruptions, a consumer key and secret should not exceed 2 KBs each. **Note**: When creating the consumer key and secret, an association to API products will not be made. Therefore, you should not specify the associated API products in your request. Instead, use the UpdateAppGroupAppKey API to make the association after the consumer key and secret are created. If a consumer key and secret already exist, you can keep them or delete them using the DeleteAppGroupAppKey API.",
                      "request": {
                        "$ref": "GoogleCloudApigeeV1AppGroupAppKey"
                      },
                      "id": "apigee.organizations.appgroups.apps.keys.create",
                      "parameterOrder": [
                        "parent"
                      ]
                    },
                    "get": {
                      "parameterOrder": [
                        "name"
                      ],
                      "id": "apigee.organizations.appgroups.apps.keys.get",
                      "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}/keys/{keysId}",
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "description": "Required. Name of the AppGroup app key. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys/{key}`",
                          "required": true,
                          "location": "path",
                          "type": "string",
                          "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+/keys/[^/]+$"
                        }
                      },
                      "path": "v1/{+name}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "description": "Gets details for a consumer key for a AppGroup app, including the key and secret value, associated API products, and other information.",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1AppGroupAppKey"
                      }
                    },
                    "delete": {
                      "response": {
                        "$ref": "GoogleCloudApigeeV1AppGroupAppKey"
                      },
                      "path": "v1/{+name}",
                      "httpMethod": "DELETE",
                      "parameters": {
                        "name": {
                          "required": true,
                          "location": "path",
                          "description": "Required. Name of the AppGroup app key. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys/{key}`",
                          "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+/keys/[^/]+$",
                          "type": "string"
                        }
                      },
                      "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}/keys/{keysId}",
                      "parameterOrder": [
                        "name"
                      ],
                      "description": "Deletes an app's consumer key and removes all API products associated with the app. After the consumer key is deleted, it cannot be used to access any APIs.",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "id": "apigee.organizations.appgroups.apps.keys.delete"
                    },
                    "updateAppGroupAppKey": {
                      "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}/keys/{keysId}",
                      "httpMethod": "POST",
                      "parameters": {
                        "name": {
                          "type": "string",
                          "required": true,
                          "location": "path",
                          "description": "Required. Name of the AppGroup app key. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys/{key}`",
                          "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+/keys/[^/]+$"
                        }
                      },
                      "request": {
                        "$ref": "GoogleCloudApigeeV1UpdateAppGroupAppKeyRequest"
                      },
                      "id": "apigee.organizations.appgroups.apps.keys.updateAppGroupAppKey",
                      "description": "Adds an API product to an AppGroupAppKey, enabling the app that holds the key to access the API resources bundled in the API product. In addition, you can add attributes and scopes to the AppGroupAppKey. This API replaces the existing attributes with those specified in the request. Include or exclude any existing attributes that you want to retain or delete, respectively. You can use the same key to access all API products associated with the app.",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1AppGroupAppKey"
                      },
                      "path": "v1/{+name}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameterOrder": [
                        "name"
                      ]
                    }
                  },
                  "resources": {
                    "apiproducts": {
                      "methods": {
                        "updateAppGroupAppKeyApiProduct": {
                          "id": "apigee.organizations.appgroups.apps.keys.apiproducts.updateAppGroupAppKeyApiProduct",
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "description": "Approves or revokes the consumer key for an API product. After a consumer key is approved, the app can use it to access APIs. A consumer key that is revoked or pending cannot be used to access an API. Any access tokens associated with a revoked consumer key will remain active. However, Apigee checks the status of the consumer key and if set to `revoked` will not allow access to the API.",
                          "response": {
                            "$ref": "GoogleProtobufEmpty"
                          },
                          "httpMethod": "POST",
                          "parameters": {
                            "name": {
                              "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+/keys/[^/]+/apiproducts/[^/]+$",
                              "description": "Required. Name of the API product in the developer app key in the following format: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys/{key}/apiproducts/{apiproduct}`",
                              "type": "string",
                              "location": "path",
                              "required": true
                            },
                            "action": {
                              "type": "string",
                              "description": "Approve or revoke the consumer key by setting this value to `approve` or `revoke` respectively. The `Content-Type` header, if set, must be set to `application/octet-stream`, with empty body.",
                              "location": "query"
                            }
                          },
                          "path": "v1/{+name}",
                          "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}/keys/{keysId}/apiproducts/{apiproductsId}",
                          "parameterOrder": [
                            "name"
                          ]
                        },
                        "delete": {
                          "parameterOrder": [
                            "name"
                          ],
                          "description": "Removes an API product from an app's consumer key. After the API product is removed, the app cannot access the API resources defined in that API product. **Note**: The consumer key is not removed, only its association with the API product.",
                          "httpMethod": "DELETE",
                          "parameters": {
                            "name": {
                              "description": "Required. Parent of the AppGroup app key. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}/apps/{app}/keys/{key}/apiproducts/{apiproduct}`",
                              "pattern": "^organizations/[^/]+/appgroups/[^/]+/apps/[^/]+/keys/[^/]+/apiproducts/[^/]+$",
                              "required": true,
                              "type": "string",
                              "location": "path"
                            }
                          },
                          "id": "apigee.organizations.appgroups.apps.keys.apiproducts.delete",
                          "path": "v1/{+name}",
                          "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/apps/{appsId}/keys/{keysId}/apiproducts/{apiproductsId}",
                          "response": {
                            "$ref": "GoogleCloudApigeeV1AppGroupAppKey"
                          },
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            },
            "balance": {
              "methods": {
                "credit": {
                  "id": "apigee.organizations.appgroups.balance.credit",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/appgroups/[^/]+/balance$",
                      "required": true,
                      "location": "path",
                      "type": "string",
                      "description": "Required. Account balance for the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group}/balance`"
                    }
                  },
                  "path": "v1/{+name}:credit",
                  "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/balance:credit",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1AppGroupBalance"
                  },
                  "request": {
                    "$ref": "GoogleCloudApigeeV1CreditAppGroupBalanceRequest"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Credits the account balance for the AppGroup."
                },
                "adjust": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}:adjust",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "required": true,
                      "pattern": "^organizations/[^/]+/appgroups/[^/]+/balance$",
                      "location": "path",
                      "description": "Required. Account balance for the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group}/balance`",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Adjust the prepaid balance for the AppGroup. This API will be used in scenarios where the AppGroup has been under-charged or over-charged.",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1AdjustAppGroupBalanceRequest"
                  },
                  "id": "apigee.organizations.appgroups.balance.adjust",
                  "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/balance:adjust",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1AppGroupBalance"
                  }
                }
              }
            }
          },
          "methods": {
            "updateMonetizationConfig": {
              "httpMethod": "PUT",
              "parameters": {
                "name": {
                  "description": "Required. Monetization configuration for the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group}/monetizationConfig`",
                  "type": "string",
                  "required": true,
                  "pattern": "^organizations/[^/]+/appgroups/[^/]+/monetizationConfig$",
                  "location": "path"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "description": "Updates the monetization configuration for the AppGroup. **Note:** We recommend that you avoid making concurrent update requests for the same resource. Near-simultaneous writes to the same entity can result in conflicts and unexpected behavior. Ensure operations are sequential when modifying a single resource.",
              "request": {
                "$ref": "GoogleCloudApigeeV1AppGroupMonetizationConfig"
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1AppGroupMonetizationConfig"
              },
              "id": "apigee.organizations.appgroups.updateMonetizationConfig",
              "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/monetizationConfig"
            },
            "update": {
              "httpMethod": "PUT",
              "parameters": {
                "action": {
                  "type": "string",
                  "location": "query",
                  "description": "Activate or de-activate the AppGroup by setting the action as `active` or `inactive`. The `Content-Type` header must be set to `application/octet-stream`, with empty body."
                },
                "name": {
                  "location": "path",
                  "required": true,
                  "description": "Required. Name of the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}`",
                  "pattern": "^organizations/[^/]+/appgroups/[^/]+$",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}",
              "response": {
                "$ref": "GoogleCloudApigeeV1AppGroup"
              },
              "id": "apigee.organizations.appgroups.update",
              "description": "Updates an AppGroup. This API replaces the existing AppGroup details with those specified in the request. Include or exclude any existing details that you want to retain or delete, respectively. Note that the state of the AppGroup should be updated using `action`, and not via AppGroup. **Note:** We recommend that you avoid making concurrent update requests for the same resource. Near-simultaneous writes to the same entity can result in conflicts and unexpected behavior. Ensure operations are sequential when modifying a single resource.",
              "request": {
                "$ref": "GoogleCloudApigeeV1AppGroup"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}"
            },
            "list": {
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "pattern": "^organizations/[^/]+$",
                  "type": "string",
                  "description": "Required. Name of the Apigee organization. Use the following structure in your request: `organizations/{org}`.",
                  "required": true,
                  "location": "path"
                },
                "pageToken": {
                  "type": "string",
                  "description": "The starting index record for listing the AppGroups.",
                  "location": "query"
                },
                "filter": {
                  "location": "query",
                  "description": "The filter expression to be used to get the list of AppGroups, where filtering can be done on status, channelId or channelUri of the app group. Examples: filter=status=active\", filter=channelId=, filter=channelUri=",
                  "type": "string"
                },
                "pageSize": {
                  "location": "query",
                  "format": "int32",
                  "type": "integer",
                  "description": "Count of AppGroups a single page can have in the response. If unspecified, at most 1000 AppGroups will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000."
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/appgroups",
              "description": "Lists all AppGroups in an organization. A maximum of 1000 AppGroups are returned in the response if PageSize is not specified, or if the PageSize is greater than 1000.",
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1ListAppGroupsResponse"
              },
              "path": "v1/{+parent}/appgroups",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "apigee.organizations.appgroups.list"
            },
            "getMonetizationConfig": {
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "id": "apigee.organizations.appgroups.getMonetizationConfig",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "location": "path",
                  "type": "string",
                  "required": true,
                  "pattern": "^organizations/[^/]+/appgroups/[^/]+/monetizationConfig$",
                  "description": "Required. Monetization configuration for the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group}/monetizationConfig`"
                }
              },
              "description": "Gets the monetization configuration for the AppGroup.",
              "response": {
                "$ref": "GoogleCloudApigeeV1AppGroupMonetizationConfig"
              },
              "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/monetizationConfig"
            },
            "delete": {
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1AppGroup"
              },
              "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "pattern": "^organizations/[^/]+/appgroups/[^/]+$",
                  "description": "Required. Name of the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}`",
                  "type": "string"
                }
              },
              "description": "Deletes an AppGroup. All app and API keys associations with the AppGroup are also removed. **Warning**: This API will permanently delete the AppGroup and related artifacts. **Note**: The delete operation is asynchronous. The AppGroup is deleted immediately, but its associated resources, such as apps and API keys, may take anywhere from a few seconds to a few minutes to be deleted.",
              "id": "apigee.organizations.appgroups.delete",
              "path": "v1/{+name}"
            },
            "create": {
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1AppGroup"
              },
              "description": "Creates an AppGroup. Once created, user can register apps under the AppGroup to obtain secret key and password. At creation time, the AppGroup's state is set as `active`.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "apigee.organizations.appgroups.create",
              "path": "v1/{+parent}/appgroups",
              "flatPath": "v1/organizations/{organizationsId}/appgroups",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "type": "string",
                  "description": "Required. Name of the Apigee organization in which the AppGroup is created. Use the following structure in your request: `organizations/{org}`.",
                  "pattern": "^organizations/[^/]+$",
                  "required": true,
                  "location": "path"
                }
              },
              "request": {
                "$ref": "GoogleCloudApigeeV1AppGroup"
              }
            },
            "getBalance": {
              "description": "Gets the account balance for the AppGroup.",
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1AppGroupBalance"
              },
              "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}/balance",
              "parameterOrder": [
                "name"
              ],
              "id": "apigee.organizations.appgroups.getBalance",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "location": "path",
                  "type": "string",
                  "required": true,
                  "pattern": "^organizations/[^/]+/appgroups/[^/]+/balance$",
                  "description": "Required. Account balance for the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group}/balance`"
                }
              }
            },
            "get": {
              "flatPath": "v1/organizations/{organizationsId}/appgroups/{appgroupsId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. Name of the AppGroup. Use the following structure in your request: `organizations/{org}/appgroups/{app_group_name}`",
                  "pattern": "^organizations/[^/]+/appgroups/[^/]+$",
                  "type": "string",
                  "location": "path",
                  "required": true
                }
              },
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}",
              "description": "Returns the AppGroup details for the provided AppGroup name in the request URI.",
              "response": {
                "$ref": "GoogleCloudApigeeV1AppGroup"
              },
              "id": "apigee.organizations.appgroups.get"
            }
          }
        },
        "operations": {
          "methods": {
            "list": {
              "path": "v1/{+name}/operations",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "The name of the operation's parent resource.",
                  "type": "string",
                  "location": "path",
                  "pattern": "^organizations/[^/]+$",
                  "required": true
                },
                "returnPartialSuccess": {
                  "location": "query",
                  "description": "When set to `true`, operations that are reachable are returned as normal, and those that are unreachable are returned in the ListOperationsResponse.unreachable field. This can only be `true` when reading across collections. For example, when `parent` is set to `\"projects/example/locations/-\"`. This field is not supported by default and will result in an `UNIMPLEMENTED` error if set unless explicitly documented otherwise in service or product specific documentation.",
                  "type": "boolean"
                },
                "pageSize": {
                  "format": "int32",
                  "type": "integer",
                  "location": "query",
                  "description": "The standard list page size."
                },
                "filter": {
                  "type": "string",
                  "description": "The standard list filter.",
                  "location": "query"
                },
                "pageToken": {
                  "description": "The standard list page token.",
                  "type": "string",
                  "location": "query"
                }
              },
              "id": "apigee.organizations.operations.list",
              "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
              "response": {
                "$ref": "GoogleLongrunningListOperationsResponse"
              },
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1/organizations/{organizationsId}/operations"
            },
            "get": {
              "flatPath": "v1/organizations/{organizationsId}/operations/{operationsId}",
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "apigee.organizations.operations.get",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "type": "string",
                  "pattern": "^organizations/[^/]+/operations/[^/]+$",
                  "description": "The name of the operation resource.",
                  "location": "path",
                  "required": true
                }
              },
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
              "parameterOrder": [
                "name"
              ]
            }
          }
        },
        "apiproducts": {
          "methods": {
            "create": {
              "id": "apigee.organizations.apiproducts.create",
              "path": "v1/{+parent}/apiproducts",
              "response": {
                "$ref": "GoogleCloudApigeeV1ApiProduct"
              },
              "flatPath": "v1/organizations/{organizationsId}/apiproducts",
              "description": "Creates an API product in an organization. You create API products after you have proxied backend services using API proxies. An API product is a collection of API resources combined with quota settings and metadata that you can use to deliver customized and productized API bundles to your developer community. This metadata can include: - Scope - Environments - API proxies - Extensible profile API products enable you repackage APIs on the fly, without having to do any additional coding or configuration. Apigee recommends that you start with a simple API product including only required elements. You then provision credentials to apps to enable them to start testing your APIs. After you have authentication and authorization working against a simple API product, you can iterate to create finer-grained API products, defining different sets of API resources for each API product. **WARNING:** - If you don't specify an API proxy in the request body, *any* app associated with the product can make calls to *any* API in your entire organization. - If you don't specify an environment in the request body, the product allows access to all environments. For more information, see What is an API product?",
              "parameterOrder": [
                "parent"
              ],
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "required": true,
                  "location": "path",
                  "type": "string",
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. Name of the organization in which the API product will be created. Use the following structure in your request: `organizations/{org}` If the resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "request": {
                "$ref": "GoogleCloudApigeeV1ApiProduct"
              }
            },
            "delete": {
              "path": "v1/{+name}",
              "description": "Deletes an API product from an organization. Deleting an API product causes app requests to the resource URIs defined in the API product to fail. Ensure that you create a new API product to serve existing apps, unless your intention is to disable access to the resources defined in the API product. The API product name required in the request URL is the internal name of the product, not the display name. While they may be the same, it depends on whether the API product was created via the UI or the API. View the list of API products to verify the internal name.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "location": "path",
                  "description": "Required. Name of the API product. Use the following structure in your request: `organizations/{org}/apiproducts/{apiproduct}` If the resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                  "required": true,
                  "pattern": "^organizations/[^/]+/apiproducts/[^/]+$",
                  "type": "string"
                }
              },
              "id": "apigee.organizations.apiproducts.delete",
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}",
              "response": {
                "$ref": "GoogleCloudApigeeV1ApiProduct"
              }
            },
            "move": {
              "description": "Moves an API product to a different space.",
              "id": "apigee.organizations.apiproducts.move",
              "response": {
                "$ref": "GoogleCloudApigeeV1ApiProduct"
              },
              "path": "v1/{+name}:move",
              "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}:move",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "location": "path",
                  "description": "Required. API product to move in the following format: `organizations/{org}/apiproducts/{apiproduct}",
                  "required": true,
                  "type": "string",
                  "pattern": "^organizations/[^/]+/apiproducts/[^/]+$"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "GoogleCloudApigeeV1MoveApiProductRequest"
              }
            },
            "attributes": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "request": {
                "$ref": "GoogleCloudApigeeV1Attributes"
              },
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/apiproducts/[^/]+$",
                  "location": "path",
                  "required": true,
                  "description": "Required. Name of the API product. Use the following structure in your request: `organizations/{org}/apiproducts/{apiproduct}` If the API Product resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1Attributes"
              },
              "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}/attributes",
              "description": "Updates or creates API product attributes. This API **replaces** the current list of attributes with the attributes specified in the request body. In this way, you can update existing attributes, add new attributes, or delete existing attributes by omitting them from the request body. **Note**: OAuth access tokens and Key Management Service (KMS) entities (apps, developers, and API products) are cached for 180 seconds (current default). Any custom attributes associated with entities also get cached for at least 180 seconds after entity is accessed during runtime. In this case, the `ExpiresIn` element on the OAuthV2 policy won't be able to expire an access token in less than 180 seconds.",
              "path": "v1/{+name}/attributes",
              "id": "apigee.organizations.apiproducts.attributes",
              "parameterOrder": [
                "name"
              ]
            },
            "list": {
              "path": "v1/{+parent}/apiproducts",
              "response": {
                "$ref": "GoogleCloudApigeeV1ListApiProductsResponse"
              },
              "id": "apigee.organizations.apiproducts.list",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/apiproducts",
              "description": "Lists all API product names for an organization. Filter the list by passing an `attributename` and `attibutevalue`. The maximum number of API products returned is 1000. You can paginate the list of API products returned using the `startKey` and `count` query parameters. If the resource has the `space` attribute set, the response may not return all resources. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
              "httpMethod": "GET",
              "parameters": {
                "expand": {
                  "type": "boolean",
                  "description": "Flag that specifies whether to expand the results. Set to `true` to get expanded details about each API.",
                  "location": "query"
                },
                "parent": {
                  "location": "path",
                  "description": "Required. Name of the organization. Use the following structure in your request: `organizations/{org}` If the resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                  "required": true,
                  "type": "string",
                  "pattern": "^organizations/[^/]+$"
                },
                "count": {
                  "location": "query",
                  "type": "string",
                  "description": "Enter the number of API products you want returned in the API call. The limit is 1000.",
                  "format": "int64"
                },
                "space": {
                  "location": "query",
                  "type": "string",
                  "description": "Optional. The Space to list API products for. When none provided, all the spaces the user has list access, will be used implicitly, and the same following rules will apply. Can be used in conjunction with start_key, expand and count for paginated response. Composite queries with attributename and attributevalue are not supported yet."
                },
                "attributevalue": {
                  "type": "string",
                  "location": "query",
                  "description": "Value of the attribute used to filter the search."
                },
                "attributename": {
                  "type": "string",
                  "location": "query",
                  "description": "Name of the attribute used to filter the search."
                },
                "startKey": {
                  "type": "string",
                  "location": "query",
                  "description": "Gets a list of API products starting with a specific API product in the list. For example, if you're returning 50 API products at a time (using the `count` query parameter), you can view products 50-99 by entering the name of the 50th API product in the first API (without using `startKey`). Product name is case sensitive."
                }
              },
              "parameterOrder": [
                "parent"
              ]
            },
            "get": {
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "type": "string",
                  "description": "Required. Name of the API product. Use the following structure in your request: `organizations/{org}/apiproducts/{apiproduct}` If the resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                  "pattern": "^organizations/[^/]+/apiproducts/[^/]+$",
                  "required": true,
                  "location": "path"
                }
              },
              "id": "apigee.organizations.apiproducts.get",
              "response": {
                "$ref": "GoogleCloudApigeeV1ApiProduct"
              },
              "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "description": "Gets configuration details for an API product. The API product name required in the request URL is the internal name of the product, not the display name. While they may be the same, it depends on whether the API product was created via the UI or the API. View the list of API products to verify the internal name."
            },
            "update": {
              "response": {
                "$ref": "GoogleCloudApigeeV1ApiProduct"
              },
              "httpMethod": "PUT",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/apiproducts/[^/]+$",
                  "description": "Required. Name of the API product. Use the following structure in your request: `organizations/{org}/apiproducts/{apiproduct}` If the resource has the `space` attribute set, IAM permissions are checked against the Space resource path.To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                  "type": "string",
                  "location": "path",
                  "required": true
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}",
              "path": "v1/{+name}",
              "id": "apigee.organizations.apiproducts.update",
              "parameterOrder": [
                "name"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Updates an existing API product. You must include all required values, whether or not you are updating them, as well as any optional values that you are updating. The API product name required in the request URL is the internal name of the product, not the display name. While they may be the same, it depends on whether the API product was created via UI or API. View the list of API products to identify their internal names. **Note:** We recommend that you avoid making concurrent update requests for the same resource. Near-simultaneous writes to the same entity can result in conflicts and unexpected behavior. Ensure operations are sequential when modifying a single resource.",
              "request": {
                "$ref": "GoogleCloudApigeeV1ApiProduct"
              }
            }
          },
          "resources": {
            "attributes": {
              "methods": {
                "delete": {
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/apiproducts/[^/]+/attributes/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. Name of the API product attribute. Use the following structure in your request: `organizations/{org}/apiproducts/{apiproduct}/attributes/{attribute}` If the API Product resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                    }
                  },
                  "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}/attributes/{attributesId}",
                  "id": "apigee.organizations.apiproducts.attributes.delete",
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Attribute"
                  },
                  "description": "Deletes an API product attribute.",
                  "path": "v1/{+name}"
                },
                "updateApiProductAttribute": {
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "description": "Required. Name of the API product. Use the following structure in your request: `organizations/{org}/apiproducts/{apiproduct}` If the API Product resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "pattern": "^organizations/[^/]+/apiproducts/[^/]+/attributes/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "request": {
                    "$ref": "GoogleCloudApigeeV1Attribute"
                  },
                  "id": "apigee.organizations.apiproducts.attributes.updateApiProductAttribute",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Updates the value of an API product attribute. **Note**: OAuth access tokens and Key Management Service (KMS) entities (apps, developers, and API products) are cached for 180 seconds (current default). Any custom attributes associated with entities also get cached for at least 180 seconds after entity is accessed during runtime. In this case, the `ExpiresIn` element on the OAuthV2 policy won't be able to expire an access token in less than 180 seconds.",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Attribute"
                  },
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}/attributes/{attributesId}"
                },
                "list": {
                  "description": "Lists all API product attributes.",
                  "id": "apigee.organizations.apiproducts.attributes.list",
                  "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}/attributes",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "location": "path",
                      "required": true,
                      "description": "Required. Name of the API product. Use the following structure in your request: `organizations/{org}/apiproducts/{apiproduct}` If the API Product resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/apiproducts/[^/]+$"
                    }
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Attributes"
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+parent}/attributes"
                },
                "get": {
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "Required. Name of the API product attribute. Use the following structure in your request: `organizations/{org}/apiproducts/{apiproduct}/attributes/{attribute}` If the API Product resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "pattern": "^organizations/[^/]+/apiproducts/[^/]+/attributes/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "id": "apigee.organizations.apiproducts.attributes.get",
                  "description": "Gets the value of an API product attribute.",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Attribute"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}/attributes/{attributesId}"
                }
              }
            },
            "rateplans": {
              "methods": {
                "get": {
                  "id": "apigee.organizations.apiproducts.rateplans.get",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1RatePlan"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "description": "Gets the details of a rate plan.",
                  "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}/rateplans/{rateplansId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/apiproducts/[^/]+/rateplans/[^/]+$",
                      "description": "Required. Name of the rate plan. Use the following structure in your request: `organizations/{org}/apiproducts/{apiproduct}/rateplans/{rateplan}` If the API Product resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "required": true,
                      "location": "path"
                    }
                  }
                },
                "delete": {
                  "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}/rateplans/{rateplansId}",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1RatePlan"
                  },
                  "id": "apigee.organizations.apiproducts.rateplans.delete",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "description": "Required. ID of the rate plan. Use the following structure in your request: `organizations/{org}/apiproducts/{apiproduct}/rateplans/{rateplan}` If the API Product resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "required": true,
                      "location": "path",
                      "pattern": "^organizations/[^/]+/apiproducts/[^/]+/rateplans/[^/]+$",
                      "type": "string"
                    }
                  },
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Deletes a rate plan.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "create": {
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Create a rate plan that is associated with an API product in an organization. Using rate plans, API product owners can monetize their API products by configuring one or more of the following: - Billing frequency - Initial setup fees for using an API product - Payment funding model (postpaid only) - Fixed recurring or consumption-based charges for using an API product - Revenue sharing with developer partners An API product can have multiple rate plans associated with it but *only one* rate plan can be active at any point of time. **Note: From the developer's perspective, they purchase API products not rate plans.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1RatePlan"
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1RatePlan"
                  },
                  "path": "v1/{+parent}/rateplans",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. Name of the API product that is associated with the rate plan. Use the following structure in your request: `organizations/{org}/apiproducts/{apiproduct}` If the API Product resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "required": true,
                      "location": "path",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/apiproducts/[^/]+$"
                    }
                  },
                  "id": "apigee.organizations.apiproducts.rateplans.create",
                  "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}/rateplans"
                },
                "list": {
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListRatePlansResponse"
                  },
                  "id": "apigee.organizations.apiproducts.rateplans.list",
                  "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}/rateplans",
                  "description": "Lists all the rate plans for an API product.",
                  "path": "v1/{+parent}/rateplans",
                  "httpMethod": "GET",
                  "parameters": {
                    "startKey": {
                      "location": "query",
                      "type": "string",
                      "description": "Name of the rate plan from which to start displaying the list of rate plans. If omitted, the list starts from the first item. For example, to view the rate plans from 51-150, set the value of `startKey` to the name of the 51st rate plan and set the value of `count` to 100."
                    },
                    "parent": {
                      "pattern": "^organizations/[^/]+/apiproducts/[^/]+$",
                      "type": "string",
                      "required": true,
                      "description": "Required. Name of the API product. Use the following structure in your request: `organizations/{org}/apiproducts/{apiproduct}` Use `organizations/{org}/apiproducts/-` to return rate plans for all API products within the organization. If the API Product resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "location": "path"
                    },
                    "expand": {
                      "description": "Flag that specifies whether to expand the results. Set to `true` to get expanded details about each API. Defaults to `false`.",
                      "type": "boolean",
                      "location": "query"
                    },
                    "orderBy": {
                      "description": "Name of the attribute used for sorting. Valid values include: * `name`: Name of the rate plan. * `state`: State of the rate plan (`DRAFT`, `PUBLISHED`). * `startTime`: Time when the rate plan becomes active. * `endTime`: Time when the rate plan expires. **Note**: Not supported by Apigee at this time.",
                      "type": "string",
                      "location": "query"
                    },
                    "count": {
                      "type": "integer",
                      "location": "query",
                      "format": "int32",
                      "description": "Number of rate plans to return in the API call. Use with the `startKey` parameter to provide more targeted filtering. The maximum limit is 1000. Defaults to 100."
                    },
                    "state": {
                      "description": "State of the rate plans (`DRAFT`, `PUBLISHED`) that you want to display.",
                      "location": "query",
                      "type": "string",
                      "enumDescriptions": [
                        "State of the rate plan is not specified.",
                        "Rate plan is in draft mode and only visible to API providers.",
                        "Rate plan is published and will become visible to developers for the configured duration (between `startTime` and `endTime`)."
                      ],
                      "enum": [
                        "STATE_UNSPECIFIED",
                        "DRAFT",
                        "PUBLISHED"
                      ]
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "update": {
                  "path": "v1/{+name}",
                  "httpMethod": "PUT",
                  "parameters": {
                    "name": {
                      "description": "Required. Name of the rate plan. Use the following structure in your request: `organizations/{org}/apiproducts/{apiproduct}/rateplans/{rateplan}` If the API Product resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "pattern": "^organizations/[^/]+/apiproducts/[^/]+/rateplans/[^/]+$",
                      "required": true,
                      "type": "string",
                      "location": "path"
                    }
                  },
                  "description": "Updates an existing rate plan.",
                  "id": "apigee.organizations.apiproducts.rateplans.update",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1RatePlan"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/apiproducts/{apiproductsId}/rateplans/{rateplansId}",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1RatePlan"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                }
              }
            }
          }
        },
        "spaces": {
          "methods": {
            "setIamPolicy": {
              "flatPath": "v1/organizations/{organizationsId}/spaces/{spacesId}:setIamPolicy",
              "request": {
                "$ref": "GoogleIamV1SetIamPolicyRequest"
              },
              "parameterOrder": [
                "resource"
              ],
              "response": {
                "$ref": "GoogleIamV1Policy"
              },
              "description": "IAM META APIs Callers must have apigee.spaces.setIamPolicy.",
              "httpMethod": "POST",
              "parameters": {
                "resource": {
                  "type": "string",
                  "description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
                  "location": "path",
                  "pattern": "^organizations/[^/]+/spaces/[^/]+$",
                  "required": true
                }
              },
              "id": "apigee.organizations.spaces.setIamPolicy",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+resource}:setIamPolicy"
            },
            "getIamPolicy": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Callers must have apigee.spaces.getIamPolicy.",
              "httpMethod": "GET",
              "parameters": {
                "resource": {
                  "type": "string",
                  "description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
                  "required": true,
                  "location": "path",
                  "pattern": "^organizations/[^/]+/spaces/[^/]+$"
                },
                "options.requestedPolicyVersion": {
                  "location": "query",
                  "description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "id": "apigee.organizations.spaces.getIamPolicy",
              "flatPath": "v1/organizations/{organizationsId}/spaces/{spacesId}:getIamPolicy",
              "path": "v1/{+resource}:getIamPolicy",
              "parameterOrder": [
                "resource"
              ],
              "response": {
                "$ref": "GoogleIamV1Policy"
              }
            },
            "patch": {
              "flatPath": "v1/organizations/{organizationsId}/spaces/{spacesId}",
              "request": {
                "$ref": "GoogleCloudApigeeV1Space"
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1Space"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "description": "Required. Name of the space in the following format: `organizations/{org}/spaces/{space_id}`.",
                  "pattern": "^organizations/[^/]+/spaces/[^/]+$",
                  "type": "string"
                },
                "updateMask": {
                  "format": "google-fieldmask",
                  "location": "query",
                  "description": "Required. List of fields to be updated. Fields that can be updated: display_name.",
                  "type": "string"
                }
              },
              "description": "Updates a space.",
              "id": "apigee.organizations.spaces.patch",
              "parameterOrder": [
                "name"
              ]
            },
            "list": {
              "path": "v1/{+parent}/spaces",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Lists spaces under an organization.",
              "response": {
                "$ref": "GoogleCloudApigeeV1ListSpacesResponse"
              },
              "id": "apigee.organizations.spaces.list",
              "parameterOrder": [
                "parent"
              ],
              "flatPath": "v1/organizations/{organizationsId}/spaces",
              "httpMethod": "GET",
              "parameters": {
                "pageToken": {
                  "type": "string",
                  "description": "Optional. A page token, received from a previous `ListSpaces` call. Provide this to retrieve the subsequent page. When paginating, all parameters must match the original call.",
                  "location": "query"
                },
                "pageSize": {
                  "location": "query",
                  "format": "int32",
                  "type": "integer",
                  "description": "Optional. The maximum number of spaces to return. The service may return fewer than this value. If unspecified, at most 50 spaces will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000."
                },
                "parent": {
                  "required": true,
                  "location": "path",
                  "type": "string",
                  "description": "Required. Use the following structure in your request: `organizations`",
                  "pattern": "^organizations/[^/]+$"
                }
              }
            },
            "testIamPermissions": {
              "parameterOrder": [
                "resource"
              ],
              "httpMethod": "POST",
              "parameters": {
                "resource": {
                  "pattern": "^organizations/[^/]+/spaces/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field."
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Callers don't need any permissions.",
              "response": {
                "$ref": "GoogleIamV1TestIamPermissionsResponse"
              },
              "id": "apigee.organizations.spaces.testIamPermissions",
              "path": "v1/{+resource}:testIamPermissions",
              "flatPath": "v1/organizations/{organizationsId}/spaces/{spacesId}:testIamPermissions",
              "request": {
                "$ref": "GoogleIamV1TestIamPermissionsRequest"
              }
            },
            "delete": {
              "id": "apigee.organizations.spaces.delete",
              "description": "Deletes an organization space.",
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1/organizations/{organizationsId}/spaces/{spacesId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "type": "string",
                  "location": "path",
                  "required": true,
                  "description": "Required. Apigee organization space name in the following format: `organizations/{org}/spaces/{space}`",
                  "pattern": "^organizations/[^/]+/spaces/[^/]+$"
                }
              },
              "response": {
                "$ref": "GoogleProtobufEmpty"
              }
            },
            "get": {
              "flatPath": "v1/organizations/{organizationsId}/spaces/{spacesId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1Space"
              },
              "id": "apigee.organizations.spaces.get",
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/spaces/[^/]+$",
                  "description": "Required. Apigee organization space name in the following format: `organizations/{org}/spaces/{space}`",
                  "location": "path",
                  "type": "string",
                  "required": true
                }
              },
              "description": "Get a space under an Organization.",
              "path": "v1/{+name}"
            },
            "create": {
              "path": "v1/{+parent}/spaces",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "description": "Required. Name of the Google Cloud project in which to associate the Apigee space. Pass the information as a query parameter using the following structure in your request: `organizations/`",
                  "location": "path",
                  "pattern": "^organizations/[^/]+$",
                  "required": true,
                  "type": "string"
                },
                "spaceId": {
                  "description": "Required. Resource ID of the space.",
                  "type": "string",
                  "location": "query"
                }
              },
              "description": "Create a space under an organization.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "parent"
              ],
              "request": {
                "$ref": "GoogleCloudApigeeV1Space"
              },
              "flatPath": "v1/organizations/{organizationsId}/spaces",
              "response": {
                "$ref": "GoogleCloudApigeeV1Space"
              },
              "id": "apigee.organizations.spaces.create"
            }
          }
        },
        "analytics": {
          "resources": {
            "datastores": {
              "methods": {
                "list": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListDatastoresResponse"
                  },
                  "path": "v1/{+parent}/analytics/datastores",
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/analytics/datastores",
                  "httpMethod": "GET",
                  "parameters": {
                    "targetType": {
                      "type": "string",
                      "location": "query",
                      "description": "Optional. TargetType is used to fetch all Datastores that match the type"
                    },
                    "parent": {
                      "location": "path",
                      "required": true,
                      "pattern": "^organizations/[^/]+$",
                      "type": "string",
                      "description": "Required. The parent organization name. Must be of the form `organizations/{org}`."
                    }
                  },
                  "id": "apigee.organizations.analytics.datastores.list",
                  "description": "List Datastores"
                },
                "update": {
                  "request": {
                    "$ref": "GoogleCloudApigeeV1Datastore"
                  },
                  "description": "Update a Datastore",
                  "flatPath": "v1/organizations/{organizationsId}/analytics/datastores/{datastoresId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Datastore"
                  },
                  "path": "v1/{+name}",
                  "id": "apigee.organizations.analytics.datastores.update",
                  "httpMethod": "PUT",
                  "parameters": {
                    "name": {
                      "required": true,
                      "description": "Required. The resource name of datastore to be updated. Must be of the form `organizations/{org}/analytics/datastores/{datastoreId}`",
                      "location": "path",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/analytics/datastores/[^/]+$"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ]
                },
                "delete": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/analytics/datastores/{datastoresId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleProtobufEmpty"
                  },
                  "id": "apigee.organizations.analytics.datastores.delete",
                  "description": "Delete a Datastore from an org.",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "description": "Required. Resource name of the Datastore to be deleted. Must be of the form `organizations/{org}/analytics/datastores/{datastoreId}`",
                      "pattern": "^organizations/[^/]+/analytics/datastores/[^/]+$",
                      "type": "string"
                    }
                  },
                  "path": "v1/{+name}"
                },
                "test": {
                  "path": "v1/{+parent}/analytics/datastores:test",
                  "flatPath": "v1/organizations/{organizationsId}/analytics/datastores:test",
                  "description": "Test if Datastore configuration is correct. This includes checking if credentials provided by customer have required permissions in target destination storage",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1TestDatastoreResponse"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. The parent organization name Must be of the form `organizations/{org}`",
                      "pattern": "^organizations/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "id": "apigee.organizations.analytics.datastores.test",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1Datastore"
                  }
                },
                "create": {
                  "request": {
                    "$ref": "GoogleCloudApigeeV1Datastore"
                  },
                  "id": "apigee.organizations.analytics.datastores.create",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Create a Datastore for an org",
                  "path": "v1/{+parent}/analytics/datastores",
                  "parameterOrder": [
                    "parent"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/analytics/datastores",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Datastore"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "pattern": "^organizations/[^/]+$",
                      "description": "Required. The parent organization name. Must be of the form `organizations/{org}`."
                    }
                  }
                },
                "get": {
                  "id": "apigee.organizations.analytics.datastores.get",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Datastore"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Get a Datastore",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "Required. Resource name of the Datastore to be get. Must be of the form `organizations/{org}/analytics/datastores/{datastoreId}`",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "pattern": "^organizations/[^/]+/analytics/datastores/[^/]+$"
                    }
                  },
                  "flatPath": "v1/organizations/{organizationsId}/analytics/datastores/{datastoresId}"
                }
              }
            }
          }
        },
        "securityProfilesV2": {
          "methods": {
            "patch": {
              "id": "apigee.organizations.securityProfilesV2.patch",
              "flatPath": "v1/organizations/{organizationsId}/securityProfilesV2/{securityProfilesV2Id}",
              "httpMethod": "PATCH",
              "parameters": {
                "updateMask": {
                  "description": "Optional. The list of fields to update. Valid fields to update are `description` and `profileAssessmentConfigs`.",
                  "format": "google-fieldmask",
                  "location": "query",
                  "type": "string"
                },
                "name": {
                  "pattern": "^organizations/[^/]+/securityProfilesV2/[^/]+$",
                  "type": "string",
                  "description": "Identifier. Name of the security profile v2 resource. Format: organizations/{org}/securityProfilesV2/{profile}",
                  "location": "path",
                  "required": true
                }
              },
              "request": {
                "$ref": "GoogleCloudApigeeV1SecurityProfileV2"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Update a security profile V2.",
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityProfileV2"
              },
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}"
            },
            "create": {
              "flatPath": "v1/organizations/{organizationsId}/securityProfilesV2",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityProfileV2"
              },
              "httpMethod": "POST",
              "parameters": {
                "securityProfileV2Id": {
                  "description": "Required. The security profile id.",
                  "type": "string",
                  "location": "query"
                },
                "parent": {
                  "type": "string",
                  "description": "Required. The parent resource name. Format: `organizations/{org}`",
                  "required": true,
                  "location": "path",
                  "pattern": "^organizations/[^/]+$"
                }
              },
              "request": {
                "$ref": "GoogleCloudApigeeV1SecurityProfileV2"
              },
              "parameterOrder": [
                "parent"
              ],
              "path": "v1/{+parent}/securityProfilesV2",
              "description": "Create a security profile v2.",
              "id": "apigee.organizations.securityProfilesV2.create"
            },
            "get": {
              "flatPath": "v1/organizations/{organizationsId}/securityProfilesV2/{securityProfilesV2Id}",
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "GET",
              "parameters": {
                "riskAssessmentType": {
                  "type": "string",
                  "enum": [
                    "RISK_ASSESSMENT_TYPE_UNSPECIFIED",
                    "APIGEE",
                    "API_HUB"
                  ],
                  "enumDescriptions": [
                    "Risk assessment type is not specified.",
                    "Risk assessment type is Apigee.",
                    "Risk assessment type is API Hub."
                  ],
                  "description": "Optional. The risk assessment type of the security profile. Defaults to ADVANCED_API_SECURITY.",
                  "location": "query"
                },
                "name": {
                  "description": "Required. The name of the security profile v2 to get. Format: `organizations/{org}/securityProfilesV2/{profile}`",
                  "pattern": "^organizations/[^/]+/securityProfilesV2/[^/]+$",
                  "location": "path",
                  "type": "string",
                  "required": true
                }
              },
              "path": "v1/{+name}",
              "description": "Get a security profile v2.",
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityProfileV2"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "apigee.organizations.securityProfilesV2.get"
            },
            "list": {
              "path": "v1/{+parent}/securityProfilesV2",
              "httpMethod": "GET",
              "parameters": {
                "pageSize": {
                  "type": "integer",
                  "description": "Optional. The maximum number of profiles to return",
                  "format": "int32",
                  "location": "query"
                },
                "pageToken": {
                  "location": "query",
                  "type": "string",
                  "description": "Optional. A page token, received from a previous `ListSecurityProfilesV2` call. Provide this to retrieve the subsequent page."
                },
                "riskAssessmentType": {
                  "enum": [
                    "RISK_ASSESSMENT_TYPE_UNSPECIFIED",
                    "APIGEE",
                    "API_HUB"
                  ],
                  "enumDescriptions": [
                    "Risk assessment type is not specified.",
                    "Risk assessment type is Apigee.",
                    "Risk assessment type is API Hub."
                  ],
                  "type": "string",
                  "description": "Optional. The risk assessment type of the security profiles. Defaults to ADVANCED_API_SECURITY.",
                  "location": "query"
                },
                "parent": {
                  "type": "string",
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. For a specific organization, list of all the security profiles. Format: `organizations/{org}`",
                  "location": "path",
                  "required": true
                }
              },
              "id": "apigee.organizations.securityProfilesV2.list",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "parent"
              ],
              "description": "List security profiles v2.",
              "response": {
                "$ref": "GoogleCloudApigeeV1ListSecurityProfilesV2Response"
              },
              "flatPath": "v1/organizations/{organizationsId}/securityProfilesV2"
            },
            "delete": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "DELETE",
              "parameters": {
                "riskAssessmentType": {
                  "enumDescriptions": [
                    "Risk assessment type is not specified.",
                    "Risk assessment type is Apigee.",
                    "Risk assessment type is API Hub."
                  ],
                  "type": "string",
                  "location": "query",
                  "enum": [
                    "RISK_ASSESSMENT_TYPE_UNSPECIFIED",
                    "APIGEE",
                    "API_HUB"
                  ],
                  "description": "Optional. The risk assessment type of the security profile. Defaults to ADVANCED_API_SECURITY."
                },
                "name": {
                  "description": "Required. The name of the security profile v2 to delete. Format: `organizations/{org}/securityProfilesV2/{profile}`",
                  "required": true,
                  "location": "path",
                  "type": "string",
                  "pattern": "^organizations/[^/]+/securityProfilesV2/[^/]+$"
                }
              },
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleProtobufEmpty"
              },
              "description": "Delete a security profile v2.",
              "id": "apigee.organizations.securityProfilesV2.delete",
              "flatPath": "v1/organizations/{organizationsId}/securityProfilesV2/{securityProfilesV2Id}"
            }
          }
        },
        "apimServiceExtensions": {
          "methods": {
            "patch": {
              "id": "apigee.organizations.apimServiceExtensions.patch",
              "description": "Updates an APIM service extension in an organization.",
              "path": "v1/{+name}",
              "httpMethod": "PATCH",
              "parameters": {
                "allowMissing": {
                  "type": "boolean",
                  "location": "query",
                  "description": "Optional. If set to true, and the service extension is not found, a new service extension will be created. In this situation, `update_mask` is ignored."
                },
                "updateMask": {
                  "type": "string",
                  "description": "Optional. The list of fields to update.",
                  "location": "query",
                  "format": "google-fieldmask"
                },
                "name": {
                  "type": "string",
                  "description": "Identifier. unique name of the APIM service extension. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number.",
                  "pattern": "^organizations/[^/]+/apimServiceExtensions/[^/]+$",
                  "required": true,
                  "location": "path"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "flatPath": "v1/organizations/{organizationsId}/apimServiceExtensions/{apimServiceExtensionsId}",
              "request": {
                "$ref": "GoogleCloudApigeeV1ApimServiceExtension"
              }
            },
            "create": {
              "flatPath": "v1/organizations/{organizationsId}/apimServiceExtensions",
              "request": {
                "$ref": "GoogleCloudApigeeV1ApimServiceExtension"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "httpMethod": "POST",
              "parameters": {
                "apimServiceExtensionId": {
                  "type": "string",
                  "description": "Optional. ID used to uniquely identify of the service extension. It must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number.",
                  "location": "query"
                },
                "parent": {
                  "type": "string",
                  "description": "Required. Name of the organization in which the service extension will be created. Use the following structure in your request: `organizations/{org}`",
                  "required": true,
                  "location": "path",
                  "pattern": "^organizations/[^/]+$"
                }
              },
              "id": "apigee.organizations.apimServiceExtensions.create",
              "parameterOrder": [
                "parent"
              ],
              "path": "v1/{+parent}/apimServiceExtensions",
              "description": "Creates an APIM ServiceExtension in an organization."
            },
            "get": {
              "parameterOrder": [
                "name"
              ],
              "id": "apigee.organizations.apimServiceExtensions.get",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/apimServiceExtensions/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "description": "Required. Name of the service extension. Use the following structure in your request: `organizations/{org}/apimServiceExtensions/{extension_id}`"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1ApimServiceExtension"
              },
              "description": "Gets APIM service extension details.",
              "path": "v1/{+name}",
              "flatPath": "v1/organizations/{organizationsId}/apimServiceExtensions/{apimServiceExtensionsId}"
            },
            "delete": {
              "flatPath": "v1/organizations/{organizationsId}/apimServiceExtensions/{apimServiceExtensionsId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "path": "v1/{+name}",
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "description": "Required. Name of the service extension. Use the following structure in your request: `organizations/{org}/apimServiceExtensions/{extension_id}`",
                  "required": true,
                  "location": "path",
                  "type": "string",
                  "pattern": "^organizations/[^/]+/apimServiceExtensions/[^/]+$"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "description": "Deletes APIM service extension from an organization.",
              "id": "apigee.organizations.apimServiceExtensions.delete"
            },
            "list": {
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "required": true,
                  "pattern": "^organizations/[^/]+$",
                  "type": "string",
                  "location": "path",
                  "description": "Required. Name of the organization for which to list the service extension. Use the following structure in your request: `organizations/{org}/apimServiceExtensions`"
                },
                "pageToken": {
                  "type": "string",
                  "description": "Optional. Page token, returned from a previous `ListApimServiceExtensions` call, that you can use to retrieve the next page.",
                  "location": "query"
                },
                "pageSize": {
                  "type": "integer",
                  "location": "query",
                  "format": "int32",
                  "description": "Optional. Maximum number of items to return. If unspecified, at most 25 service extension will be returned."
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/apimServiceExtensions",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1ListApimServiceExtensionsResponse"
              },
              "parameterOrder": [
                "parent"
              ],
              "description": "Lists all APIM service extensions in an organization.",
              "id": "apigee.organizations.apimServiceExtensions.list",
              "path": "v1/{+parent}/apimServiceExtensions"
            }
          }
        },
        "apis": {
          "methods": {
            "patch": {
              "request": {
                "$ref": "GoogleCloudApigeeV1ApiProxy"
              },
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "PATCH",
              "parameters": {
                "updateMask": {
                  "description": "Required. The list of fields to update.",
                  "location": "query",
                  "type": "string",
                  "format": "google-fieldmask"
                },
                "name": {
                  "location": "path",
                  "required": true,
                  "pattern": "^organizations/[^/]+/apis/[^/]+$",
                  "description": "Required. API proxy to update in the following format: `organizations/{org}/apis/{api}` If the resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                  "type": "string"
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1ApiProxy"
              },
              "description": "Updates an existing API proxy.",
              "path": "v1/{+name}",
              "id": "apigee.organizations.apis.patch"
            },
            "get": {
              "description": "Gets an API proxy including a list of existing revisions.",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "required": true,
                  "pattern": "^organizations/[^/]+/apis/[^/]+$",
                  "type": "string",
                  "location": "path",
                  "description": "Required. Name of the API proxy in the following format: `organizations/{org}/apis/{api}` If the API Proxy resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}",
              "parameterOrder": [
                "name"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "id": "apigee.organizations.apis.get",
              "response": {
                "$ref": "GoogleCloudApigeeV1ApiProxy"
              }
            },
            "delete": {
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1ApiProxy"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Deletes an API proxy and all associated endpoints, policies, resources, and revisions. The API proxy must be undeployed before you can delete it.",
              "id": "apigee.organizations.apis.delete",
              "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}",
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "description": "Required. Name of the API proxy in the following format: `organizations/{org}/apis/{api}` If the API Proxy resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                  "required": true,
                  "location": "path",
                  "pattern": "^organizations/[^/]+/apis/[^/]+$",
                  "type": "string"
                }
              }
            },
            "move": {
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "description": "Required. API proxy to move in the following format: `organizations/{org}/apis/{api}`",
                  "type": "string",
                  "location": "path",
                  "pattern": "^organizations/[^/]+/apis/[^/]+$",
                  "required": true
                }
              },
              "id": "apigee.organizations.apis.move",
              "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}:move",
              "description": "Moves an API proxy to a different space.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1ApiProxy"
              },
              "path": "v1/{+name}:move",
              "request": {
                "$ref": "GoogleCloudApigeeV1MoveApiProxyRequest"
              }
            },
            "create": {
              "request": {
                "$ref": "GoogleApiHttpBody"
              },
              "id": "apigee.organizations.apis.create",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "type": "string",
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. Name of the organization in the following format: `organizations/{org}` If the API Proxy resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                  "required": true,
                  "location": "path"
                },
                "name": {
                  "description": "Name of the API proxy. Restrict the characters used to: A-Za-z0-9._-",
                  "type": "string",
                  "location": "query"
                },
                "space": {
                  "location": "query",
                  "description": "Optional. The ID of the space associated with this proxy. Any IAM policies applied to the space will affect access to this proxy. Note that this field is only respected when creating a new proxy. It has no effect when creating a new revision for an existing proxy.",
                  "type": "string"
                },
                "action": {
                  "location": "query",
                  "description": "Action to perform when importing an API proxy configuration bundle. Set this parameter to one of the following values: * `import` to import the API proxy configuration bundle. * `validate` to validate the API proxy configuration bundle without importing it.",
                  "type": "string"
                },
                "validate": {
                  "type": "boolean",
                  "description": "Ignored. All uploads are validated regardless of the value of this field. Maintained for compatibility with Apigee Edge API.",
                  "location": "query"
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/apis",
              "description": "Creates an API proxy. The API proxy created will not be accessible at runtime until it is deployed to an environment. Create a new API proxy by setting the `name` query parameter to the name of the API proxy. Import an API proxy configuration bundle stored in zip format on your local machine to your organization by doing the following: * Set the `name` query parameter to the name of the API proxy. * Set the `action` query parameter to `import`. * Set the `Content-Type` header to `multipart/form-data`. * Pass as a file the name of API proxy configuration bundle stored in zip format on your local machine using the `file` form field. **Note**: To validate the API proxy configuration bundle only without importing it, set the `action` query parameter to `validate`. When importing an API proxy configuration bundle, if the API proxy does not exist, it will be created. If the API proxy exists, then a new revision is created. Invalid API proxy configurations are rejected, and a list of validation errors is returned to the client.",
              "response": {
                "$ref": "GoogleCloudApigeeV1ApiProxyRevision"
              },
              "parameterOrder": [
                "parent"
              ],
              "path": "v1/{+parent}/apis",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "list": {
              "path": "v1/{+parent}/apis",
              "response": {
                "$ref": "GoogleCloudApigeeV1ListApiProxiesResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/apis",
              "id": "apigee.organizations.apis.list",
              "description": "Lists the names of all API proxies in an organization. The names returned correspond to the names defined in the configuration files for each API proxy. If the resource has the `space` attribute set, the response may not return all resources. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
              "parameterOrder": [
                "parent"
              ],
              "httpMethod": "GET",
              "parameters": {
                "includeMetaData": {
                  "description": "Flag that specifies whether to include API proxy metadata in the response.",
                  "type": "boolean",
                  "location": "query"
                },
                "includeRevisions": {
                  "location": "query",
                  "description": "Flag that specifies whether to include a list of revisions in the response.",
                  "type": "boolean"
                },
                "space": {
                  "type": "string",
                  "location": "query",
                  "description": "Optional. The space ID to filter the list of proxies (optional). If unspecified, all proxies in the organization will be listed."
                },
                "parent": {
                  "description": "Required. Name of the organization in the following format: `organizations/{org}` If the resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                  "required": true,
                  "location": "path",
                  "type": "string",
                  "pattern": "^organizations/[^/]+$"
                }
              }
            }
          },
          "resources": {
            "debugsessions": {
              "methods": {
                "list": {
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListApiDebugSessionsResponse"
                  },
                  "path": "v1/{+parent}/debugsessions",
                  "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/debugsessions",
                  "id": "apigee.organizations.apis.debugsessions.list",
                  "httpMethod": "GET",
                  "parameters": {
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "description": "Optional. Maximum number of debug sessions to return. The page size defaults to 25.",
                      "format": "int32"
                    },
                    "pageToken": {
                      "type": "string",
                      "location": "query",
                      "description": "Optional. Page token, returned from a previous ListApiDebugSessions call, that you can use to retrieve the next page."
                    },
                    "parent": {
                      "location": "path",
                      "required": true,
                      "pattern": "^organizations/[^/]+/apis/[^/]+$",
                      "type": "string",
                      "description": "Required. The name of the API Proxy for which to list debug sessions. Must be of the form: `organizations/{organization}/apis/{api}`."
                    }
                  },
                  "description": "Lists debug sessions that are currently active in the given API Proxy."
                }
              }
            },
            "keyvaluemaps": {
              "methods": {
                "update": {
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Update the key value map scoped to an organization, environment, or API proxy.",
                  "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/keyvaluemaps/{keyvaluemapsId}",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1KeyValueMap"
                  },
                  "httpMethod": "PUT",
                  "parameters": {
                    "name": {
                      "required": true,
                      "description": "Required. Scope as indicated by the URI in which to fetch the key value map. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "pattern": "^organizations/[^/]+/apis/[^/]+/keyvaluemaps/[^/]+$",
                      "location": "path",
                      "type": "string"
                    }
                  },
                  "id": "apigee.organizations.apis.keyvaluemaps.update",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1KeyValueMap"
                  }
                },
                "delete": {
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/apis/[^/]+/keyvaluemaps/[^/]+$",
                      "location": "path",
                      "description": "Required. Name of the key value map. Use the following structure in your request: `organizations/{org}/apis/{api}/keyvaluemaps/{keyvaluemap}` If the API Proxy resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.apis.keyvaluemaps.delete",
                  "path": "v1/{+name}",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1KeyValueMap"
                  },
                  "description": "Deletes a key value map from an API proxy.",
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/keyvaluemaps/{keyvaluemapsId}"
                },
                "create": {
                  "description": "Creates a key value map in an API proxy.",
                  "path": "v1/{+parent}/keyvaluemaps",
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/keyvaluemaps",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1KeyValueMap"
                  },
                  "id": "apigee.organizations.apis.keyvaluemaps.create",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1KeyValueMap"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "pattern": "^organizations/[^/]+/apis/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. Name of the environment in which to create the key value map. Use the following structure in your request: `organizations/{org}/apis/{api}` If the API Proxy resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                    }
                  }
                },
                "get": {
                  "description": "Get the key value map scoped to an organization, environment, or API proxy.",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1KeyValueMap"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "apigee.organizations.apis.keyvaluemaps.get",
                  "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/keyvaluemaps/{keyvaluemapsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "pattern": "^organizations/[^/]+/apis/[^/]+/keyvaluemaps/[^/]+$",
                      "required": true,
                      "type": "string",
                      "description": "Required. Scope as indicated by the URI in which to fetch the key value map. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                    }
                  },
                  "path": "v1/{+name}"
                }
              },
              "resources": {
                "entries": {
                  "methods": {
                    "get": {
                      "response": {
                        "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                      },
                      "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/keyvaluemaps/{keyvaluemapsId}/entries/{entriesId}",
                      "id": "apigee.organizations.apis.keyvaluemaps.entries.get",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "description": "Get the key value entry value for a key value map scoped to an organization, environment, or API proxy. **Note**: Supported for Apigee hybrid 1.8.x and higher.",
                      "parameterOrder": [
                        "name"
                      ],
                      "path": "v1/{+name}",
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "description": "Required. Scope as indicated by the URI in which to fetch the key value map entry/value. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}/entries/{entry}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}/entries/{entry}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}/entries/{entry}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "location": "path",
                          "pattern": "^organizations/[^/]+/apis/[^/]+/keyvaluemaps/[^/]+/entries/[^/]+$",
                          "required": true,
                          "type": "string"
                        }
                      }
                    },
                    "update": {
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/keyvaluemaps/{keyvaluemapsId}/entries/{entriesId}",
                      "path": "v1/{+name}",
                      "httpMethod": "PUT",
                      "parameters": {
                        "name": {
                          "type": "string",
                          "description": "Required. Scope as indicated by the URI in which to create the key value map entry. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "required": true,
                          "location": "path",
                          "pattern": "^organizations/[^/]+/apis/[^/]+/keyvaluemaps/[^/]+/entries/[^/]+$"
                        }
                      },
                      "description": "Update key value entry scoped to an organization, environment, or API proxy for an existing key.",
                      "id": "apigee.organizations.apis.keyvaluemaps.entries.update",
                      "request": {
                        "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                      }
                    },
                    "list": {
                      "description": "Lists key value entries for key values maps scoped to an organization, environment, or API proxy. **Note**: Supported for Apigee hybrid 1.8.x and higher.",
                      "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/keyvaluemaps/{keyvaluemapsId}/entries",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1ListKeyValueEntriesResponse"
                      },
                      "httpMethod": "GET",
                      "parameters": {
                        "pageToken": {
                          "description": "Optional. Page token. If provides, must be a valid key value entry returned from a previous call that can be used to retrieve the next page.",
                          "location": "query",
                          "type": "string"
                        },
                        "pageSize": {
                          "type": "integer",
                          "format": "int32",
                          "location": "query",
                          "description": "Optional. Maximum number of key value entries to return. If unspecified, at most 100 entries will be returned."
                        },
                        "parent": {
                          "required": true,
                          "location": "path",
                          "type": "string",
                          "description": "Required. Scope as indicated by the URI in which to list key value maps. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "pattern": "^organizations/[^/]+/apis/[^/]+/keyvaluemaps/[^/]+$"
                        }
                      },
                      "path": "v1/{+parent}/entries",
                      "parameterOrder": [
                        "parent"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "id": "apigee.organizations.apis.keyvaluemaps.entries.list"
                    },
                    "create": {
                      "parameterOrder": [
                        "parent"
                      ],
                      "description": "Creates key value entries in a key value map scoped to an organization, environment, or API proxy. **Note**: Supported for Apigee hybrid 1.8.x and higher.",
                      "path": "v1/{+parent}/entries",
                      "id": "apigee.organizations.apis.keyvaluemaps.entries.create",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                      },
                      "httpMethod": "POST",
                      "parameters": {
                        "parent": {
                          "required": true,
                          "location": "path",
                          "description": "Required. Scope as indicated by the URI in which to create the key value map entry. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "pattern": "^organizations/[^/]+/apis/[^/]+/keyvaluemaps/[^/]+$",
                          "type": "string"
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "request": {
                        "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                      },
                      "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/keyvaluemaps/{keyvaluemapsId}/entries"
                    },
                    "delete": {
                      "description": "Deletes a key value entry from a key value map scoped to an organization, environment, or API proxy. **Notes:** * After you delete the key value entry, the policy consuming the entry will continue to function with its cached values for a few minutes. This is expected behavior. * Supported for Apigee hybrid 1.8.x and higher.",
                      "parameterOrder": [
                        "name"
                      ],
                      "id": "apigee.organizations.apis.keyvaluemaps.entries.delete",
                      "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/keyvaluemaps/{keyvaluemapsId}/entries/{entriesId}",
                      "httpMethod": "DELETE",
                      "parameters": {
                        "name": {
                          "location": "path",
                          "required": true,
                          "description": "Required. Scope as indicated by the URI in which to delete the key value map entry. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}/entries/{entry}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}/entries/{entry}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}/entries/{entry}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "pattern": "^organizations/[^/]+/apis/[^/]+/keyvaluemaps/[^/]+/entries/[^/]+$",
                          "type": "string"
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "path": "v1/{+name}",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                      }
                    }
                  }
                }
              }
            },
            "revisions": {
              "resources": {
                "deployments": {
                  "methods": {
                    "list": {
                      "httpMethod": "GET",
                      "parameters": {
                        "parent": {
                          "description": "Required. Name of the API proxy revision for which to return deployment information in the following format: `organizations/{org}/apis/{api}/revisions/{rev}`. If the API proxy resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "required": true,
                          "type": "string",
                          "pattern": "^organizations/[^/]+/apis/[^/]+/revisions/[^/]+$",
                          "location": "path"
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "description": "Lists all deployments of an API proxy revision.",
                      "path": "v1/{+parent}/deployments",
                      "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/revisions/{revisionsId}/deployments",
                      "id": "apigee.organizations.apis.revisions.deployments.list",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1ListDeploymentsResponse"
                      },
                      "parameterOrder": [
                        "parent"
                      ]
                    }
                  }
                }
              },
              "methods": {
                "updateApiProxyRevision": {
                  "request": {
                    "$ref": "GoogleApiHttpBody"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/revisions/{revisionsId}",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ApiProxyRevision"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "validate": {
                      "type": "boolean",
                      "location": "query",
                      "description": "Ignored. All uploads are validated regardless of the value of this field. Maintained for compatibility with Apigee Edge API."
                    },
                    "name": {
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "pattern": "^organizations/[^/]+/apis/[^/]+/revisions/[^/]+$",
                      "description": "Required. API proxy revision to update in the following format: `organizations/{org}/apis/{api}/revisions/{rev}` If the API Proxy resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "apigee.organizations.apis.revisions.updateApiProxyRevision",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Updates an existing API proxy revision by uploading the API proxy configuration bundle as a zip file from your local machine. You can update only API proxy revisions that have never been deployed. After deployment, an API proxy revision becomes immutable, even if it is undeployed. Set the `Content-Type` header to either `multipart/form-data` or `application/octet-stream`.",
                  "path": "v1/{+name}"
                },
                "delete": {
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/revisions/{revisionsId}",
                  "description": "Deletes an API proxy revision and all policies, resources, endpoints, and revisions associated with it. The API proxy revision must be undeployed before you can delete it.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ApiProxyRevision"
                  },
                  "path": "v1/{+name}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "description": "Required. API proxy revision in the following format: `organizations/{org}/apis/{api}/revisions/{rev}` If the API Proxy resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/apis/[^/]+/revisions/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "id": "apigee.organizations.apis.revisions.delete"
                },
                "get": {
                  "httpMethod": "GET",
                  "parameters": {
                    "format": {
                      "location": "query",
                      "description": "Format used when downloading the API proxy configuration revision. Set to `bundle` to download the API proxy configuration revision as a zip file.",
                      "type": "string"
                    },
                    "name": {
                      "type": "string",
                      "description": "Required. API proxy revision in the following format: `organizations/{org}/apis/{api}/revisions/{rev}` If the API Proxy resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "pattern": "^organizations/[^/]+/apis/[^/]+/revisions/[^/]+$",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "path": "v1/{+name}",
                  "id": "apigee.organizations.apis.revisions.get",
                  "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/revisions/{revisionsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Gets an API proxy revision. To download the API proxy configuration bundle for the specified revision as a zip file, set the `format` query parameter to `bundle`. If you are using curl, specify `-o filename.zip` to save the output to a file; otherwise, it displays to `stdout`. Then, develop the API proxy configuration locally and upload the updated API proxy configuration revision, as described in [updateApiProxyRevision](updateApiProxyRevision).",
                  "response": {
                    "$ref": "GoogleApiHttpBody"
                  }
                }
              }
            },
            "deployments": {
              "methods": {
                "list": {
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "description": "Required. Name of the API proxy for which to return deployment information in the following format: `organizations/{org}/apis/{api}` If the API proxy resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "pattern": "^organizations/[^/]+/apis/[^/]+$"
                    }
                  },
                  "id": "apigee.organizations.apis.deployments.list",
                  "description": "Lists all deployments of an API proxy.",
                  "flatPath": "v1/organizations/{organizationsId}/apis/{apisId}/deployments",
                  "path": "v1/{+parent}/deployments",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListDeploymentsResponse"
                  }
                }
              }
            }
          }
        },
        "deployments": {
          "methods": {
            "list": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+parent}/deployments",
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. Name of the organization for which to return deployment information in the following format: `organizations/{org}`",
                  "type": "string",
                  "required": true,
                  "location": "path"
                },
                "sharedFlows": {
                  "type": "boolean",
                  "location": "query",
                  "description": "Optional. Flag that specifies whether to return shared flow or API proxy deployments. Set to `true` to return shared flow deployments; set to `false` to return API proxy deployments. Defaults to `false`."
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/deployments",
              "response": {
                "$ref": "GoogleCloudApigeeV1ListDeploymentsResponse"
              },
              "description": "Lists all deployments of API proxies or shared flows.",
              "id": "apigee.organizations.deployments.list",
              "parameterOrder": [
                "parent"
              ]
            }
          }
        },
        "hostSecurityReports": {
          "methods": {
            "getResult": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "required": true,
                  "type": "string",
                  "location": "path",
                  "description": "Required. Name of the security report result to get. Must be of the form `organizations/{org}/securityReports/{reportId}/result`.",
                  "pattern": "^organizations/[^/]+/hostSecurityReports/[^/]+/result$"
                }
              },
              "description": "After the query is completed, use this API to retrieve the results. If the request succeeds, and there is a non-zero result set, the result is downloaded to the client as a zipped JSON file. The name of the downloaded file will be: OfflineQueryResult-.zip Example: `OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip`",
              "id": "apigee.organizations.hostSecurityReports.getResult",
              "response": {
                "$ref": "GoogleApiHttpBody"
              },
              "flatPath": "v1/organizations/{organizationsId}/hostSecurityReports/{hostSecurityReportsId}/result",
              "path": "v1/{+name}"
            },
            "getResultView": {
              "flatPath": "v1/organizations/{organizationsId}/hostSecurityReports/{hostSecurityReportsId}/resultView",
              "path": "v1/{+name}",
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityReportResultView"
              },
              "description": "After the query is completed, use this API to view the query result when result size is small.",
              "id": "apigee.organizations.hostSecurityReports.getResultView",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. Name of the security report result view to get. Must be of the form `organizations/{org}/securityReports/{reportId}/resultView`.",
                  "type": "string",
                  "required": true,
                  "location": "path",
                  "pattern": "^organizations/[^/]+/hostSecurityReports/[^/]+/resultView$"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "create": {
              "flatPath": "v1/organizations/{organizationsId}/hostSecurityReports",
              "parameterOrder": [
                "parent"
              ],
              "id": "apigee.organizations.hostSecurityReports.create",
              "description": "Submit a query at host level to be processed in the background. If the submission of the query succeeds, the API returns a 201 status and an ID that refer to the query. In addition to the HTTP status 201, the `state` of \"enqueued\" means that the request succeeded.",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "required": true,
                  "pattern": "^organizations/[^/]+$",
                  "location": "path",
                  "description": "Required. The parent resource name. Must be of the form `organizations/{org}`.",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityReport"
              },
              "request": {
                "$ref": "GoogleCloudApigeeV1SecurityReportQuery"
              },
              "path": "v1/{+parent}/hostSecurityReports",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "get": {
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "required": true,
                  "type": "string",
                  "pattern": "^organizations/[^/]+/hostSecurityReports/[^/]+$",
                  "location": "path",
                  "description": "Required. Name of the security report to get. Must be of the form `organizations/{org}/securityReports/{reportId}`."
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}",
              "flatPath": "v1/organizations/{organizationsId}/hostSecurityReports/{hostSecurityReportsId}",
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityReport"
              },
              "id": "apigee.organizations.hostSecurityReports.get",
              "description": "Get status of a query submitted at host level. If the query is still in progress, the `state` is set to \"running\" After the query has completed successfully, `state` is set to \"completed\""
            },
            "list": {
              "httpMethod": "GET",
              "parameters": {
                "status": {
                  "description": "Filter response list by security report status.",
                  "type": "string",
                  "location": "query"
                },
                "dataset": {
                  "type": "string",
                  "location": "query",
                  "description": "Filter response list by dataset. Example: `api`, `mint`"
                },
                "pageSize": {
                  "format": "int32",
                  "location": "query",
                  "description": "The maximum number of security report to return in the list response.",
                  "type": "integer"
                },
                "to": {
                  "location": "query",
                  "description": "Filter response list by returning security reports that created before this date time. Time must be in ISO date-time format like '2011-12-03T10:16:30Z'.",
                  "type": "string"
                },
                "submittedBy": {
                  "type": "string",
                  "description": "Filter response list by user who submitted queries.",
                  "location": "query"
                },
                "envgroupHostname": {
                  "description": "Required. Filter response list by hostname.",
                  "location": "query",
                  "type": "string"
                },
                "from": {
                  "type": "string",
                  "location": "query",
                  "description": "Filter response list by returning security reports that created after this date time. Time must be in ISO date-time format like '2011-12-03T10:15:30Z'."
                },
                "parent": {
                  "type": "string",
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. The parent resource name. Must be of the form `organizations/{org}`.",
                  "required": true,
                  "location": "path"
                },
                "pageToken": {
                  "location": "query",
                  "type": "string",
                  "description": "Token returned from the previous list response to fetch the next page."
                }
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1ListSecurityReportsResponse"
              },
              "path": "v1/{+parent}/hostSecurityReports",
              "flatPath": "v1/organizations/{organizationsId}/hostSecurityReports",
              "id": "apigee.organizations.hostSecurityReports.list",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "parent"
              ],
              "description": "Return a list of Security Reports at host level."
            }
          }
        },
        "sharedflows": {
          "methods": {
            "delete": {
              "description": "Deletes a shared flow and all it's revisions. The shared flow must be undeployed before you can delete it.",
              "flatPath": "v1/organizations/{organizationsId}/sharedflows/{sharedflowsId}",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1SharedFlow"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "id": "apigee.organizations.sharedflows.delete",
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/sharedflows/[^/]+$",
                  "location": "path",
                  "type": "string",
                  "required": true,
                  "description": "Required. shared flow name of the form: `organizations/{organization_id}/sharedflows/{shared_flow_id}` If the resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                }
              }
            },
            "list": {
              "flatPath": "v1/organizations/{organizationsId}/sharedflows",
              "path": "v1/{+parent}/sharedflows",
              "description": "Lists all shared flows in the organization. If the resource has the `space` attribute set, the response may not return all resources. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1ListSharedFlowsResponse"
              },
              "httpMethod": "GET",
              "parameters": {
                "includeRevisions": {
                  "location": "query",
                  "description": "Indicates whether to include a list of revisions in the response.",
                  "type": "boolean"
                },
                "includeMetaData": {
                  "type": "boolean",
                  "location": "query",
                  "description": "Indicates whether to include shared flow metadata in the response."
                },
                "space": {
                  "type": "string",
                  "location": "query",
                  "description": "Optional. The space ID used to filter the list of shared flows (optional). If unspecified, all shared flows in the organization will be listed. To learn how Spaces can be used to manage resources, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                },
                "parent": {
                  "location": "path",
                  "required": true,
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. The name of the parent organization under which to get shared flows. Must be of the form: `organizations/{organization_id}` If the resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                  "type": "string"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "apigee.organizations.sharedflows.list"
            },
            "create": {
              "path": "v1/{+parent}/sharedflows",
              "response": {
                "$ref": "GoogleCloudApigeeV1SharedFlowRevision"
              },
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "pattern": "^organizations/[^/]+$",
                  "type": "string",
                  "location": "path",
                  "description": "Required. The name of the parent organization under which to create the shared flow. Must be of the form: `organizations/{organization_id}` If the resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                  "required": true
                },
                "action": {
                  "description": "Required. Must be set to either `import` or `validate`.",
                  "type": "string",
                  "location": "query"
                },
                "name": {
                  "location": "query",
                  "type": "string",
                  "description": "Required. The name to give the shared flow"
                },
                "space": {
                  "type": "string",
                  "location": "query",
                  "description": "Optional. The ID of the space to associated with this shared flow. Any IAM policies applied to the space will affect access to this shared flow. Note that this field is only respected when creating a new shared flow. It has no effect when creating a new revision for an existing shared flow."
                }
              },
              "description": "Uploads a ZIP-formatted shared flow configuration bundle to an organization. If the shared flow already exists, this creates a new revision of it. If the shared flow does not exist, this creates it. Once imported, the shared flow revision must be deployed before it can be accessed at runtime. The size limit of a shared flow bundle is 15 MB.",
              "flatPath": "v1/organizations/{organizationsId}/sharedflows",
              "request": {
                "$ref": "GoogleApiHttpBody"
              },
              "parameterOrder": [
                "parent"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "apigee.organizations.sharedflows.create"
            },
            "move": {
              "flatPath": "v1/organizations/{organizationsId}/sharedflows/{sharedflowsId}:move",
              "path": "v1/{+name}:move",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "required": true,
                  "location": "path",
                  "type": "string",
                  "description": "Required. Shared Flow to move in the following format: `organizations/{org}/sharedflows/{shared_flow}`",
                  "pattern": "^organizations/[^/]+/sharedflows/[^/]+$"
                }
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1SharedFlow"
              },
              "description": "Moves an shared flow to a different space.",
              "id": "apigee.organizations.sharedflows.move",
              "request": {
                "$ref": "GoogleCloudApigeeV1MoveSharedFlowRequest"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ]
            },
            "get": {
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/sharedflows/[^/]+$",
                  "type": "string",
                  "location": "path",
                  "required": true,
                  "description": "Required. The name of the shared flow to get. Must be of the form: `organizations/{organization_id}/sharedflows/{shared_flow_id}` If the resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "apigee.organizations.sharedflows.get",
              "flatPath": "v1/organizations/{organizationsId}/sharedflows/{sharedflowsId}",
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1SharedFlow"
              },
              "description": "Gets a shared flow by name, including a list of its revisions."
            }
          },
          "resources": {
            "revisions": {
              "resources": {
                "deployments": {
                  "methods": {
                    "list": {
                      "id": "apigee.organizations.sharedflows.revisions.deployments.list",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "GET",
                      "parameters": {
                        "parent": {
                          "location": "path",
                          "type": "string",
                          "required": true,
                          "pattern": "^organizations/[^/]+/sharedflows/[^/]+/revisions/[^/]+$",
                          "description": "Required. Name of the API proxy revision for which to return deployment information in the following format: `organizations/{org}/sharedflows/{sharedflow}/revisions/{rev}`. If the shared flow resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                        }
                      },
                      "path": "v1/{+parent}/deployments",
                      "flatPath": "v1/organizations/{organizationsId}/sharedflows/{sharedflowsId}/revisions/{revisionsId}/deployments",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1ListDeploymentsResponse"
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "description": "Lists all deployments of a shared flow revision."
                    }
                  }
                }
              },
              "methods": {
                "updateSharedFlowRevision": {
                  "request": {
                    "$ref": "GoogleApiHttpBody"
                  },
                  "description": "Updates a shared flow revision. This operation is only allowed on revisions which have never been deployed. After deployment a revision becomes immutable, even if it becomes undeployed. The payload is a ZIP-formatted shared flow. Content type must be either multipart/form-data or application/octet-stream.",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/sharedflows/[^/]+/revisions/[^/]+$",
                      "location": "path",
                      "description": "Required. The name of the shared flow revision to update. Must be of the form: `organizations/{organization_id}/sharedflows/{shared_flow_id}/revisions/{revision_id}` If the resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "required": true
                    },
                    "validate": {
                      "type": "boolean",
                      "description": "Ignored. All uploads are validated regardless of the value of this field. It is kept for compatibility with existing APIs. Must be `true` or `false` if provided.",
                      "location": "query"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/sharedflows/{sharedflowsId}/revisions/{revisionsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1SharedFlowRevision"
                  },
                  "path": "v1/{+name}",
                  "id": "apigee.organizations.sharedflows.revisions.updateSharedFlowRevision"
                },
                "delete": {
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Required. The name of the shared flow revision to delete. Must be of the form: `organizations/{organization_id}/sharedflows/{shared_flow_id}/revisions/{revision_id}` If the Shared Flow resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "required": true,
                      "location": "path",
                      "pattern": "^organizations/[^/]+/sharedflows/[^/]+/revisions/[^/]+$"
                    }
                  },
                  "description": "Deletes a shared flow and all associated policies, resources, and revisions. You must undeploy the shared flow before deleting it.",
                  "flatPath": "v1/organizations/{organizationsId}/sharedflows/{sharedflowsId}/revisions/{revisionsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.sharedflows.revisions.delete",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1SharedFlowRevision"
                  }
                },
                "get": {
                  "description": "Gets a revision of a shared flow. To download the shared flow configuration bundle for the specified revision as a zip file, set the `format` query parameter to `bundle`. If you are using curl, specify `-o filename.zip` to save the output to a file; otherwise, it displays to `stdout`. Then, develop the shared flow configuration locally and upload the updated sharedFlow configuration revision, as described in [updateSharedFlowRevision](updateSharedFlowRevision).",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "flatPath": "v1/organizations/{organizationsId}/sharedflows/{sharedflowsId}/revisions/{revisionsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.sharedflows.revisions.get",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/sharedflows/[^/]+/revisions/[^/]+$",
                      "type": "string",
                      "description": "Required. The name of the shared flow revision to get. Must be of the form: `organizations/{organization_id}/sharedflows/{shared_flow_id}/revisions/{revision_id}` If the Shared Flow resource has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "location": "path",
                      "required": true
                    },
                    "format": {
                      "type": "string",
                      "description": "Specify `bundle` to export the contents of the shared flow bundle. Otherwise, the bundle metadata is returned.",
                      "location": "query"
                    }
                  },
                  "response": {
                    "$ref": "GoogleApiHttpBody"
                  }
                }
              }
            },
            "deployments": {
              "methods": {
                "list": {
                  "path": "v1/{+parent}/deployments",
                  "parameterOrder": [
                    "parent"
                  ],
                  "id": "apigee.organizations.sharedflows.deployments.list",
                  "description": "Lists all deployments of a shared flow.",
                  "flatPath": "v1/organizations/{organizationsId}/sharedflows/{sharedflowsId}/deployments",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListDeploymentsResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "pattern": "^organizations/[^/]+/sharedflows/[^/]+$",
                      "location": "path",
                      "required": true,
                      "description": "Required. Name of the shared flow for which to return deployment information in the following format: `organizations/{org}/sharedflows/{sharedflow}` If the shared flow resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "securityAssessmentResults": {
          "methods": {
            "batchCompute": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/securityAssessmentResults:batchCompute",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "type": "string",
                  "description": "Required. Name of the organization for which the score needs to be computed in the following format: `organizations/{org}/securityAssessmentResults`",
                  "pattern": "^organizations/[^/]+/securityAssessmentResults$",
                  "location": "path",
                  "required": true
                }
              },
              "request": {
                "$ref": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequest"
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsResponse"
              },
              "path": "v1/{+name}:batchCompute",
              "parameterOrder": [
                "name"
              ],
              "id": "apigee.organizations.securityAssessmentResults.batchCompute",
              "description": "Compute RAV2 security scores for a set of resources."
            }
          }
        },
        "datacollectors": {
          "methods": {
            "patch": {
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "type": "string",
                  "location": "path",
                  "required": true,
                  "pattern": "^organizations/[^/]+/datacollectors/[^/]+$",
                  "description": "Required. Name of the data collector in the following format: `organizations/{org}/datacollectors/{data_collector_id}`."
                },
                "updateMask": {
                  "type": "string",
                  "location": "query",
                  "description": "List of fields to be updated.",
                  "format": "google-fieldmask"
                }
              },
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1/organizations/{organizationsId}/datacollectors/{datacollectorsId}",
              "id": "apigee.organizations.datacollectors.patch",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Updates a data collector.",
              "request": {
                "$ref": "GoogleCloudApigeeV1DataCollector"
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1DataCollector"
              }
            },
            "get": {
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "type": "string",
                  "required": true,
                  "location": "path",
                  "pattern": "^organizations/[^/]+/datacollectors/[^/]+$",
                  "description": "Required. Name of the data collector in the following format: `organizations/{org}/datacollectors/{data_collector_id}`."
                }
              },
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1DataCollector"
              },
              "flatPath": "v1/organizations/{organizationsId}/datacollectors/{datacollectorsId}",
              "id": "apigee.organizations.datacollectors.get",
              "description": "Gets a data collector."
            },
            "create": {
              "flatPath": "v1/organizations/{organizationsId}/datacollectors",
              "id": "apigee.organizations.datacollectors.create",
              "path": "v1/{+parent}/datacollectors",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "required": true,
                  "type": "string",
                  "description": "Required. Name of the organization in which to create the data collector in the following format: `organizations/{org}`.",
                  "location": "path",
                  "pattern": "^organizations/[^/]+$"
                },
                "dataCollectorId": {
                  "location": "query",
                  "type": "string",
                  "description": "ID of the data collector. Overrides any ID in the data collector resource. Must be a string beginning with `dc_` that contains only letters, numbers, and underscores."
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1DataCollector"
              },
              "request": {
                "$ref": "GoogleCloudApigeeV1DataCollector"
              },
              "parameterOrder": [
                "parent"
              ],
              "description": "Creates a new data collector."
            },
            "delete": {
              "path": "v1/{+name}",
              "flatPath": "v1/organizations/{organizationsId}/datacollectors/{datacollectorsId}",
              "parameterOrder": [
                "name"
              ],
              "id": "apigee.organizations.datacollectors.delete",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleProtobufEmpty"
              },
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/datacollectors/[^/]+$",
                  "description": "Required. Name of the data collector in the following format: `organizations/{org}/datacollectors/{data_collector_id}`.",
                  "type": "string",
                  "location": "path",
                  "required": true
                }
              },
              "description": "Deletes a data collector."
            },
            "list": {
              "id": "apigee.organizations.datacollectors.list",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+parent}/datacollectors",
              "parameterOrder": [
                "parent"
              ],
              "flatPath": "v1/organizations/{organizationsId}/datacollectors",
              "description": "Lists all data collectors.",
              "response": {
                "$ref": "GoogleCloudApigeeV1ListDataCollectorsResponse"
              },
              "httpMethod": "GET",
              "parameters": {
                "pageSize": {
                  "description": "Maximum number of data collectors to return. The page size defaults to 25.",
                  "location": "query",
                  "format": "int32",
                  "type": "integer"
                },
                "pageToken": {
                  "type": "string",
                  "location": "query",
                  "description": "Page token, returned from a previous ListDataCollectors call, that you can use to retrieve the next page."
                },
                "parent": {
                  "type": "string",
                  "required": true,
                  "location": "path",
                  "description": "Required. Name of the organization for which to list data collectors in the following format: `organizations/{org}`.",
                  "pattern": "^organizations/[^/]+$"
                }
              }
            }
          }
        },
        "keyvaluemaps": {
          "resources": {
            "entries": {
              "methods": {
                "update": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.keyvaluemaps.entries.update",
                  "httpMethod": "PUT",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "required": true,
                      "pattern": "^organizations/[^/]+/keyvaluemaps/[^/]+/entries/[^/]+$",
                      "location": "path",
                      "description": "Required. Scope as indicated by the URI in which to create the key value map entry. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                    }
                  },
                  "flatPath": "v1/organizations/{organizationsId}/keyvaluemaps/{keyvaluemapsId}/entries/{entriesId}",
                  "description": "Update key value entry scoped to an organization, environment, or API proxy for an existing key.",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                  },
                  "path": "v1/{+name}"
                },
                "get": {
                  "id": "apigee.organizations.keyvaluemaps.entries.get",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/keyvaluemaps/[^/]+/entries/[^/]+$",
                      "description": "Required. Scope as indicated by the URI in which to fetch the key value map entry/value. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}/entries/{entry}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}/entries/{entry}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}/entries/{entry}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Get the key value entry value for a key value map scoped to an organization, environment, or API proxy. **Note**: Supported for Apigee hybrid 1.8.x and higher.",
                  "path": "v1/{+name}",
                  "flatPath": "v1/organizations/{organizationsId}/keyvaluemaps/{keyvaluemapsId}/entries/{entriesId}",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                  }
                },
                "list": {
                  "flatPath": "v1/organizations/{organizationsId}/keyvaluemaps/{keyvaluemapsId}/entries",
                  "parameterOrder": [
                    "parent"
                  ],
                  "id": "apigee.organizations.keyvaluemaps.entries.list",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListKeyValueEntriesResponse"
                  },
                  "path": "v1/{+parent}/entries",
                  "description": "Lists key value entries for key values maps scoped to an organization, environment, or API proxy. **Note**: Supported for Apigee hybrid 1.8.x and higher.",
                  "httpMethod": "GET",
                  "parameters": {
                    "pageSize": {
                      "format": "int32",
                      "type": "integer",
                      "location": "query",
                      "description": "Optional. Maximum number of key value entries to return. If unspecified, at most 100 entries will be returned."
                    },
                    "parent": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/keyvaluemaps/[^/]+$",
                      "location": "path",
                      "required": true,
                      "description": "Required. Scope as indicated by the URI in which to list key value maps. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                    },
                    "pageToken": {
                      "type": "string",
                      "location": "query",
                      "description": "Optional. Page token. If provides, must be a valid key value entry returned from a previous call that can be used to retrieve the next page."
                    }
                  }
                },
                "create": {
                  "parameterOrder": [
                    "parent"
                  ],
                  "path": "v1/{+parent}/entries",
                  "description": "Creates key value entries in a key value map scoped to an organization, environment, or API proxy. **Note**: Supported for Apigee hybrid 1.8.x and higher.",
                  "id": "apigee.organizations.keyvaluemaps.entries.create",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. Scope as indicated by the URI in which to create the key value map entry. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "pattern": "^organizations/[^/]+/keyvaluemaps/[^/]+$"
                    }
                  },
                  "request": {
                    "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/keyvaluemaps/{keyvaluemapsId}/entries"
                },
                "delete": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "apigee.organizations.keyvaluemaps.entries.delete",
                  "flatPath": "v1/organizations/{organizationsId}/keyvaluemaps/{keyvaluemapsId}/entries/{entriesId}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "type": "string",
                      "required": true,
                      "pattern": "^organizations/[^/]+/keyvaluemaps/[^/]+/entries/[^/]+$",
                      "description": "Required. Scope as indicated by the URI in which to delete the key value map entry. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}/entries/{entry}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}/entries/{entry}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}/entries/{entry}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                    }
                  },
                  "description": "Deletes a key value entry from a key value map scoped to an organization, environment, or API proxy. **Notes:** * After you delete the key value entry, the policy consuming the entry will continue to function with its cached values for a few minutes. This is expected behavior. * Supported for Apigee hybrid 1.8.x and higher.",
                  "path": "v1/{+name}",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                  }
                }
              }
            }
          },
          "methods": {
            "create": {
              "request": {
                "$ref": "GoogleCloudApigeeV1KeyValueMap"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+parent}/keyvaluemaps",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "required": true,
                  "location": "path",
                  "description": "Required. Name of the organization in which to create the key value map file. Use the following structure in your request: `organizations/{org}`",
                  "pattern": "^organizations/[^/]+$",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1KeyValueMap"
              },
              "flatPath": "v1/organizations/{organizationsId}/keyvaluemaps",
              "id": "apigee.organizations.keyvaluemaps.create",
              "description": "Creates a key value map in an organization."
            },
            "get": {
              "description": "Get the key value map scoped to an organization, environment, or API proxy.",
              "path": "v1/{+name}",
              "id": "apigee.organizations.keyvaluemaps.get",
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1/organizations/{organizationsId}/keyvaluemaps/{keyvaluemapsId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "description": "Required. Scope as indicated by the URI in which to fetch the key value map. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                  "pattern": "^organizations/[^/]+/keyvaluemaps/[^/]+$"
                }
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1KeyValueMap"
              }
            },
            "delete": {
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "type": "string",
                  "description": "Required. Name of the key value map. Use the following structure in your request: `organizations/{org}/keyvaluemaps/{keyvaluemap}`",
                  "pattern": "^organizations/[^/]+/keyvaluemaps/[^/]+$",
                  "required": true,
                  "location": "path"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "apigee.organizations.keyvaluemaps.delete",
              "description": "Deletes a key value map from an organization.",
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}",
              "response": {
                "$ref": "GoogleCloudApigeeV1KeyValueMap"
              },
              "flatPath": "v1/organizations/{organizationsId}/keyvaluemaps/{keyvaluemapsId}"
            },
            "update": {
              "path": "v1/{+name}",
              "request": {
                "$ref": "GoogleCloudApigeeV1KeyValueMap"
              },
              "id": "apigee.organizations.keyvaluemaps.update",
              "description": "Update the key value map scoped to an organization, environment, or API proxy.",
              "flatPath": "v1/organizations/{organizationsId}/keyvaluemaps/{keyvaluemapsId}",
              "response": {
                "$ref": "GoogleCloudApigeeV1KeyValueMap"
              },
              "httpMethod": "PUT",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/keyvaluemaps/[^/]+$",
                  "location": "path",
                  "required": true,
                  "description": "Required. Scope as indicated by the URI in which to fetch the key value map. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            }
          }
        },
        "reports": {
          "methods": {
            "delete": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "response": {
                "$ref": "GoogleCloudApigeeV1DeleteCustomReportResponse"
              },
              "id": "apigee.organizations.reports.delete",
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/reports/[^/]+$",
                  "type": "string",
                  "required": true,
                  "location": "path",
                  "description": "Required. Custom Report name of the form: `organizations/{organization_id}/reports/{report_name}`"
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/reports/{reportsId}",
              "description": "Deletes an existing custom report definition",
              "parameterOrder": [
                "name"
              ]
            },
            "create": {
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "pattern": "^organizations/[^/]+$",
                  "location": "path",
                  "description": "Required. The parent organization name under which the Custom Report will be created. Must be of the form: `organizations/{organization_id}/reports`",
                  "required": true,
                  "type": "string"
                }
              },
              "request": {
                "$ref": "GoogleCloudApigeeV1CustomReport"
              },
              "path": "v1/{+parent}/reports",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Creates a Custom Report for an Organization. A Custom Report provides Apigee Customers to create custom dashboards in addition to the standard dashboards which are provided. The Custom Report in its simplest form contains specifications about metrics, dimensions and filters. It is important to note that the custom report by itself does not provide an executable entity. The Edge UI converts the custom report definition into an analytics query and displays the result in a chart.",
              "response": {
                "$ref": "GoogleCloudApigeeV1CustomReport"
              },
              "flatPath": "v1/organizations/{organizationsId}/reports",
              "id": "apigee.organizations.reports.create",
              "parameterOrder": [
                "parent"
              ]
            },
            "update": {
              "id": "apigee.organizations.reports.update",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "request": {
                "$ref": "GoogleCloudApigeeV1CustomReport"
              },
              "flatPath": "v1/organizations/{organizationsId}/reports/{reportsId}",
              "response": {
                "$ref": "GoogleCloudApigeeV1CustomReport"
              },
              "description": "Update an existing custom report definition",
              "httpMethod": "PUT",
              "parameters": {
                "name": {
                  "description": "Required. Custom Report name of the form: `organizations/{organization_id}/reports/{report_name}`",
                  "type": "string",
                  "location": "path",
                  "pattern": "^organizations/[^/]+/reports/[^/]+$",
                  "required": true
                }
              },
              "parameterOrder": [
                "name"
              ]
            },
            "list": {
              "id": "apigee.organizations.reports.list",
              "path": "v1/{+parent}/reports",
              "flatPath": "v1/organizations/{organizationsId}/reports",
              "parameterOrder": [
                "parent"
              ],
              "description": "Return a list of Custom Reports",
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "type": "string",
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. The parent organization name under which the API product will be listed `organizations/{organization_id}/reports`",
                  "location": "path",
                  "required": true
                },
                "expand": {
                  "description": "Set to 'true' to get expanded details about each custom report.",
                  "type": "boolean",
                  "location": "query"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1ListCustomReportsResponse"
              }
            },
            "get": {
              "response": {
                "$ref": "GoogleCloudApigeeV1CustomReport"
              },
              "description": "Retrieve a custom report definition.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/reports/{reportsId}",
              "parameterOrder": [
                "name"
              ],
              "id": "apigee.organizations.reports.get",
              "path": "v1/{+name}",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. Custom Report name of the form: `organizations/{organization_id}/reports/{report_name}`",
                  "pattern": "^organizations/[^/]+/reports/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              }
            }
          }
        },
        "endpointAttachments": {
          "methods": {
            "get": {
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "required": true,
                  "description": "Required. Name of the endpoint attachment. Use the following structure in your request: `organizations/{org}/endpointAttachments/{endpoint_attachment}`",
                  "location": "path",
                  "type": "string",
                  "pattern": "^organizations/[^/]+/endpointAttachments/[^/]+$"
                }
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1EndpointAttachment"
              },
              "flatPath": "v1/organizations/{organizationsId}/endpointAttachments/{endpointAttachmentsId}",
              "parameterOrder": [
                "name"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "id": "apigee.organizations.endpointAttachments.get",
              "description": "Gets the endpoint attachment."
            },
            "create": {
              "description": "Creates an endpoint attachment. **Note:** Not supported for Apigee hybrid.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+parent}/endpointAttachments",
              "id": "apigee.organizations.endpointAttachments.create",
              "request": {
                "$ref": "GoogleCloudApigeeV1EndpointAttachment"
              },
              "flatPath": "v1/organizations/{organizationsId}/endpointAttachments",
              "httpMethod": "POST",
              "parameters": {
                "endpointAttachmentId": {
                  "type": "string",
                  "description": "ID to use for the endpoint attachment. ID must start with a lowercase letter followed by up to 31 lowercase letters, numbers, or hyphens, and cannot end with a hyphen. The minimum length is 2.",
                  "location": "query"
                },
                "parent": {
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. Organization the endpoint attachment will be created in.",
                  "location": "path",
                  "type": "string",
                  "required": true
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "GoogleLongrunningOperation"
              }
            },
            "list": {
              "id": "apigee.organizations.endpointAttachments.list",
              "path": "v1/{+parent}/endpointAttachments",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Lists the endpoint attachments in an organization.",
              "response": {
                "$ref": "GoogleCloudApigeeV1ListEndpointAttachmentsResponse"
              },
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. Name of the organization for which to list endpoint attachments. Use the following structure in your request: `organizations/{org}`",
                  "type": "string",
                  "required": true,
                  "location": "path"
                },
                "pageSize": {
                  "format": "int32",
                  "location": "query",
                  "description": "Optional. Maximum number of endpoint attachments to return. If unspecified, at most 25 attachments will be returned.",
                  "type": "integer"
                },
                "pageToken": {
                  "location": "query",
                  "description": "Optional. Page token, returned from a previous `ListEndpointAttachments` call, that you can use to retrieve the next page.",
                  "type": "string"
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/endpointAttachments",
              "parameterOrder": [
                "parent"
              ]
            },
            "delete": {
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "type": "string",
                  "required": true,
                  "pattern": "^organizations/[^/]+/endpointAttachments/[^/]+$",
                  "location": "path",
                  "description": "Required. Name of the endpoint attachment. Use the following structure in your request: `organizations/{org}/endpointAttachments/{endpoint_attachment}`"
                }
              },
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "id": "apigee.organizations.endpointAttachments.delete",
              "description": "Deletes an endpoint attachment.",
              "flatPath": "v1/organizations/{organizationsId}/endpointAttachments/{endpointAttachmentsId}",
              "parameterOrder": [
                "name"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}"
            }
          }
        },
        "securityFeedback": {
          "methods": {
            "get": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Gets a specific customer feedback report.",
              "id": "apigee.organizations.securityFeedback.get",
              "flatPath": "v1/organizations/{organizationsId}/securityFeedback/{securityFeedbackId}",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityFeedback"
              },
              "path": "v1/{+name}",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/securityFeedback/[^/]+$",
                  "location": "path",
                  "required": true,
                  "description": "Required. Name of the SecurityFeedback. Format: `organizations/{org}/securityFeedback/{feedback_id}` Example: organizations/apigee-organization-name/securityFeedback/feedback-id",
                  "type": "string"
                }
              }
            },
            "list": {
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "pattern": "^organizations/[^/]+$",
                  "location": "path",
                  "required": true,
                  "description": "Required. Name of the organization. Format: `organizations/{org}`. Example: organizations/apigee-organization-name/securityFeedback",
                  "type": "string"
                },
                "pageSize": {
                  "description": "Optional. The maximum number of feedback reports to return. The service may return fewer than this value. LINT.IfChange(documented_page_size_limits) If unspecified, at most 10 feedback reports will be returned. The maximum value is 100; values above 100 will be coerced to 100. LINT.ThenChange( //depot/google3/edge/sense/boq/service/v1/securityfeedback/securityfeedback_rpc.go:page_size_limits )",
                  "type": "integer",
                  "location": "query",
                  "format": "int32"
                },
                "pageToken": {
                  "location": "query",
                  "type": "string",
                  "description": "Optional. A page token, received from a previous `ListSecurityFeedback` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSecurityFeedback` must match the call that provided the page token."
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/securityFeedback",
              "response": {
                "$ref": "GoogleCloudApigeeV1ListSecurityFeedbackResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "parent"
              ],
              "description": "Lists all feedback reports which have already been submitted.",
              "id": "apigee.organizations.securityFeedback.list",
              "path": "v1/{+parent}/securityFeedback"
            },
            "delete": {
              "path": "v1/{+name}",
              "description": "Deletes a specific feedback report. Used for \"undo\" of a feedback submission.",
              "flatPath": "v1/organizations/{organizationsId}/securityFeedback/{securityFeedbackId}",
              "response": {
                "$ref": "GoogleProtobufEmpty"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "required": true,
                  "type": "string",
                  "location": "path",
                  "pattern": "^organizations/[^/]+/securityFeedback/[^/]+$",
                  "description": "Required. Name of the SecurityFeedback to delete. Use the following structure in your request: `organizations/{org}/securityFeedback/{feedback_id}`"
                }
              },
              "id": "apigee.organizations.securityFeedback.delete"
            },
            "patch": {
              "id": "apigee.organizations.securityFeedback.patch",
              "description": "Updates a specific feedback report.",
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}",
              "httpMethod": "PATCH",
              "parameters": {
                "updateMask": {
                  "format": "google-fieldmask",
                  "description": "Optional. The list of fields to update.",
                  "type": "string",
                  "location": "query"
                },
                "name": {
                  "pattern": "^organizations/[^/]+/securityFeedback/[^/]+$",
                  "description": "Output only. Identifier. The feedback name is intended to be a system-generated uuid.",
                  "type": "string",
                  "location": "path",
                  "required": true
                }
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityFeedback"
              },
              "request": {
                "$ref": "GoogleCloudApigeeV1SecurityFeedback"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/securityFeedback/{securityFeedbackId}"
            },
            "create": {
              "id": "apigee.organizations.securityFeedback.create",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. Name of the organization. Use the following structure in your request: `organizations/{org}`."
                },
                "securityFeedbackId": {
                  "location": "query",
                  "type": "string",
                  "description": "Optional. The id for this feedback report. If not provided, it will be set to a system-generated UUID."
                }
              },
              "path": "v1/{+parent}/securityFeedback",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Creates a new report containing customer feedback.",
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityFeedback"
              },
              "request": {
                "$ref": "GoogleCloudApigeeV1SecurityFeedback"
              },
              "parameterOrder": [
                "parent"
              ],
              "flatPath": "v1/organizations/{organizationsId}/securityFeedback"
            }
          }
        },
        "dnsZones": {
          "methods": {
            "get": {
              "response": {
                "$ref": "GoogleCloudApigeeV1DnsZone"
              },
              "description": "Fetches the representation of an existing DNS zone.",
              "parameterOrder": [
                "name"
              ],
              "id": "apigee.organizations.dnsZones.get",
              "flatPath": "v1/organizations/{organizationsId}/dnsZones/{dnsZonesId}",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "required": true,
                  "location": "path",
                  "description": "Required. Name of the DNS zone to fetch. Use the following structure in your request: `organizations/{org}/dnsZones/{dns_zone}`.",
                  "type": "string",
                  "pattern": "^organizations/[^/]+/dnsZones/[^/]+$"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}"
            },
            "delete": {
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "required": true,
                  "pattern": "^organizations/[^/]+/dnsZones/[^/]+$",
                  "location": "path",
                  "type": "string",
                  "description": "Required. Name of the DNS zone to delete. Use the following structure in your request: `organizations/{org}/dnsZones/{dns_zone}`."
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/dnsZones/{dnsZonesId}",
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "description": "Deletes a previously created DNS zone.",
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "id": "apigee.organizations.dnsZones.delete",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "create": {
              "flatPath": "v1/organizations/{organizationsId}/dnsZones",
              "request": {
                "$ref": "GoogleCloudApigeeV1DnsZone"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "parameterOrder": [
                "parent"
              ],
              "id": "apigee.organizations.dnsZones.create",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. Organization where the DNS zone will be created."
                },
                "dnsZoneId": {
                  "location": "query",
                  "type": "string",
                  "description": "Required. User assigned ID for this resource. Must be unique within the organization. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes."
                }
              },
              "description": "Creates a new DNS zone.",
              "path": "v1/{+parent}/dnsZones"
            },
            "list": {
              "path": "v1/{+parent}/dnsZones",
              "response": {
                "$ref": "GoogleCloudApigeeV1ListDnsZonesResponse"
              },
              "description": "Enumerates DNS zones that have been created but not yet deleted.",
              "id": "apigee.organizations.dnsZones.list",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/dnsZones",
              "parameterOrder": [
                "parent"
              ],
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "required": true,
                  "location": "path",
                  "type": "string",
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. Name of the organization for which to list the DNS zones. Use the following structure in your request: `organizations/{org}`"
                },
                "pageToken": {
                  "location": "query",
                  "description": "Optional. Page token, returned from a previous `ListDnsZones` call, that you can use to retrieve the next page.",
                  "type": "string"
                },
                "pageSize": {
                  "type": "integer",
                  "format": "int32",
                  "description": "Optional. Maximum number of DNS zones to return. If unspecified, at most 25 DNS zones will be returned.",
                  "location": "query"
                }
              }
            }
          }
        },
        "apps": {
          "methods": {
            "list": {
              "id": "apigee.organizations.apps.list",
              "path": "v1/{+parent}/apps",
              "httpMethod": "GET",
              "parameters": {
                "status": {
                  "description": "Optional. Filter by the status of the app. Valid values are `approved` or `revoked`. Defaults to `approved`.",
                  "type": "string",
                  "location": "query"
                },
                "apiProduct": {
                  "location": "query",
                  "description": "API product.",
                  "type": "string"
                },
                "expand": {
                  "location": "query",
                  "description": "Optional. Flag that specifies whether to return an expanded list of apps for the organization. Defaults to `false`.",
                  "type": "boolean"
                },
                "rows": {
                  "description": "Optional. Maximum number of app IDs to return. Defaults to 1000, which is also the upper limit. To get more than 1000, use pagination with 'pageSize' and 'pageToken' parameters.",
                  "location": "query",
                  "type": "string",
                  "format": "int64"
                },
                "apptype": {
                  "location": "query",
                  "description": "Optional. 'apptype' is no longer available. Use a 'filter' instead.",
                  "type": "string"
                },
                "parent": {
                  "required": true,
                  "description": "Required. Resource path of the parent in the following format: `organizations/{org}`",
                  "location": "path",
                  "pattern": "^organizations/[^/]+$",
                  "type": "string"
                },
                "pageToken": {
                  "type": "string",
                  "location": "query",
                  "description": "Optional. The starting index record for listing the developers. \"page_token\" is supported from ver 1.10.0 and above."
                },
                "startKey": {
                  "type": "string",
                  "location": "query",
                  "description": "Returns the list of apps starting from the specified app ID."
                },
                "keyStatus": {
                  "location": "query",
                  "description": "Optional. Key status of the app. Valid values include `approved` or `revoked`. Defaults to `approved`.",
                  "type": "string"
                },
                "filter": {
                  "description": "Optional. The filter expression to be used to get the list of apps, where filtering can be done on developerEmail, apiProduct, consumerKey, status, appId, appName, appType and appGroup. Examples: \"developerEmail=foo@bar.com\", \"appType=AppGroup\", or \"appType=Developer\" \"filter\" is supported from ver 1.10.0 and above.",
                  "location": "query",
                  "type": "string"
                },
                "includeCred": {
                  "type": "boolean",
                  "location": "query",
                  "description": "Optional. Flag that specifies whether to include credentials in the response."
                },
                "ids": {
                  "location": "query",
                  "type": "string",
                  "description": "Optional. Comma-separated list of app IDs on which to filter."
                },
                "pageSize": {
                  "format": "int32",
                  "type": "integer",
                  "location": "query",
                  "description": "Optional. Count of apps a single page can have in the response. If unspecified, at most 1000 apps will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000. \"page_size\" is supported from ver 1.10.0 and above."
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "flatPath": "v1/organizations/{organizationsId}/apps",
              "description": "Lists IDs of apps within an organization that have the specified app status (approved or revoked) or are of the specified app type (developer or company).",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1ListAppsResponse"
              }
            },
            "get": {
              "parameterOrder": [
                "name"
              ],
              "description": "Gets the app profile for the specified app ID.",
              "flatPath": "v1/organizations/{organizationsId}/apps/{appsId}",
              "path": "v1/{+name}",
              "response": {
                "$ref": "GoogleCloudApigeeV1App"
              },
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "required": true,
                  "location": "path",
                  "type": "string",
                  "description": "Required. App ID in the following format: `organizations/{org}/apps/{app}`",
                  "pattern": "^organizations/[^/]+/apps/[^/]+$"
                }
              },
              "id": "apigee.organizations.apps.get",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            }
          }
        },
        "sites": {
          "resources": {
            "apicategories": {
              "methods": {
                "patch": {
                  "flatPath": "v1/organizations/{organizationsId}/sites/{sitesId}/apicategories/{apicategoriesId}",
                  "path": "v1/{+name}",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ApiCategoryResponse"
                  },
                  "description": "Updates an API category.",
                  "id": "apigee.organizations.sites.apicategories.patch",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1ApiCategory"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "name"
                  ],
                  "httpMethod": "PATCH",
                  "parameters": {
                    "name": {
                      "description": "Required. Name of the category. Use the following structure in your request: `organizations/{org}/sites/{site}/apicategories/{apicategory}`",
                      "required": true,
                      "location": "path",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/sites/[^/]+/apicategories/[^/]+$"
                    }
                  }
                },
                "list": {
                  "path": "v1/{+parent}/apicategories",
                  "description": "Returns the API categories associated with a portal.",
                  "id": "apigee.organizations.sites.apicategories.list",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListApiCategoriesResponse"
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "pattern": "^organizations/[^/]+/sites/[^/]+$",
                      "type": "string",
                      "description": "Required. Name of the portal. Use the following structure in your request: `organizations/{org}/sites/{site}`",
                      "location": "path",
                      "required": true
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/sites/{sitesId}/apicategories"
                },
                "get": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/sites/{sitesId}/apicategories/{apicategoriesId}",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ApiCategoryResponse"
                  },
                  "description": "Gets an API category.",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "pattern": "^organizations/[^/]+/sites/[^/]+/apicategories/[^/]+$",
                      "description": "Required. Name of the category. Use the following structure in your request: `organizations/{org}/sites/{site}/apicategories/{apicategory}`",
                      "type": "string"
                    }
                  },
                  "id": "apigee.organizations.sites.apicategories.get",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}"
                },
                "create": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ApiCategoryResponse"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "required": true,
                      "description": "Required. Name of the portal. Use the following structure in your request: `organizations/{org}/sites/{site}`",
                      "location": "path",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/sites/[^/]+$"
                    }
                  },
                  "path": "v1/{+parent}/apicategories",
                  "flatPath": "v1/organizations/{organizationsId}/sites/{sitesId}/apicategories",
                  "description": "Creates a new API category.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1ApiCategory"
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "id": "apigee.organizations.sites.apicategories.create"
                },
                "delete": {
                  "path": "v1/{+name}",
                  "id": "apigee.organizations.sites.apicategories.delete",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1DeleteResponse"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/sites/{sitesId}/apicategories/{apicategoriesId}",
                  "description": "Deletes an API category.",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/sites/[^/]+/apicategories/[^/]+$",
                      "description": "Required. Name of the category. Use the following structure in your request: `organizations/{org}/sites/{site}/apicategories/{apicategory}`",
                      "type": "string",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                }
              }
            },
            "apidocs": {
              "methods": {
                "list": {
                  "parameterOrder": [
                    "parent"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "location": "path",
                      "description": "Required. Name of the portal. Use the following structure in your request: `organizations/{org}/sites/{site}`",
                      "required": true,
                      "type": "string",
                      "pattern": "^organizations/[^/]+/sites/[^/]+$"
                    },
                    "pageToken": {
                      "description": "Optional. A page token, received from a previous `ListApiDocs` call. Provide this to retrieve the subsequent page.",
                      "type": "string",
                      "location": "query"
                    },
                    "pageSize": {
                      "format": "int32",
                      "location": "query",
                      "type": "integer",
                      "description": "Optional. The maximum number of items to return. The service may return fewer than this value. If unspecified, at most 25 books will be returned. The maximum value is 100; values above 100 will be coerced to 100."
                    }
                  },
                  "path": "v1/{+parent}/apidocs",
                  "flatPath": "v1/organizations/{organizationsId}/sites/{sitesId}/apidocs",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListApiDocsResponse"
                  },
                  "description": "Returns the catalog items associated with a portal.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.sites.apidocs.list"
                },
                "update": {
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "apigee.organizations.sites.apidocs.update",
                  "httpMethod": "PUT",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "description": "Required. Name of the catalog item. Use the following structure in your request: `organizations/{org}/sites/{site}/apidocs/{apidoc}`",
                      "pattern": "^organizations/[^/]+/sites/[^/]+/apidocs/[^/]+$",
                      "type": "string"
                    }
                  },
                  "description": "Updates a catalog item.",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1ApiDoc"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/sites/{sitesId}/apidocs/{apidocsId}",
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ApiDocResponse"
                  }
                },
                "create": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ApiDocResponse"
                  },
                  "id": "apigee.organizations.sites.apidocs.create",
                  "flatPath": "v1/organizations/{organizationsId}/sites/{sitesId}/apidocs",
                  "parameterOrder": [
                    "parent"
                  ],
                  "path": "v1/{+parent}/apidocs",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "pattern": "^organizations/[^/]+/sites/[^/]+$",
                      "type": "string",
                      "description": "Required. Name of the portal. Use the following structure in your request: `organizations/{org}/sites/{site}`",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "description": "Creates a new catalog item.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1ApiDoc"
                  }
                },
                "getDocumentation": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ApiDocDocumentationResponse"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.sites.apidocs.getDocumentation",
                  "flatPath": "v1/organizations/{organizationsId}/sites/{sitesId}/apidocs/{apidocsId}/documentation",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. Resource name of the catalog item documentation. Use the following structure in your request: `organizations/{org}/sites/{site}/apidocs/{apidoc}/documentation`",
                      "pattern": "^organizations/[^/]+/sites/[^/]+/apidocs/[^/]+/documentation$"
                    }
                  },
                  "description": "Gets the documentation for the specified catalog item.",
                  "path": "v1/{+name}"
                },
                "get": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ApiDocResponse"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/sites/{sitesId}/apidocs/{apidocsId}",
                  "id": "apigee.organizations.sites.apidocs.get",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Gets a catalog item.",
                  "path": "v1/{+name}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "required": true,
                      "location": "path",
                      "description": "Required. Name of the catalog item. Use the following structure in your request: `organizations/{org}/sites/{site}/apidocs/{apidoc}`",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/sites/[^/]+/apidocs/[^/]+$"
                    }
                  }
                },
                "delete": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1DeleteResponse"
                  },
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "type": "string",
                      "required": true,
                      "description": "Required. Name of the catalog item. Use the following structure in your request: `organizations/{org}/sites/{site}/apidocs/{apidoc}`",
                      "pattern": "^organizations/[^/]+/sites/[^/]+/apidocs/[^/]+$"
                    }
                  },
                  "path": "v1/{+name}",
                  "flatPath": "v1/organizations/{organizationsId}/sites/{sitesId}/apidocs/{apidocsId}",
                  "description": "Deletes a catalog item.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.sites.apidocs.delete",
                  "parameterOrder": [
                    "name"
                  ]
                },
                "updateDocumentation": {
                  "id": "apigee.organizations.sites.apidocs.updateDocumentation",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ApiDocDocumentationResponse"
                  },
                  "description": "Updates the documentation for the specified catalog item. Note that the documentation file contents will not be populated in the return message.",
                  "flatPath": "v1/organizations/{organizationsId}/sites/{sitesId}/apidocs/{apidocsId}/documentation",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1ApiDocDocumentation"
                  },
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "PATCH",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/sites/[^/]+/apidocs/[^/]+/documentation$",
                      "type": "string",
                      "description": "Required. Resource name of the catalog item documentation. Use the following structure in your request: `organizations/{org}/sites/{site}/apidocs/{apidoc}/documentation`",
                      "location": "path",
                      "required": true
                    }
                  }
                }
              }
            }
          }
        },
        "environments": {
          "methods": {
            "getApiSecurityRuntimeConfig": {
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/apiSecurityRuntimeConfig",
              "response": {
                "$ref": "GoogleCloudApigeeV1ApiSecurityRuntimeConfig"
              },
              "description": "Gets the API Security runtime configuration for an environment. This named ApiSecurityRuntimeConfig to prevent conflicts with ApiSecurityConfig from addon config.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "pattern": "^organizations/[^/]+/environments/[^/]+/apiSecurityRuntimeConfig$",
                  "description": "Required. Name of the environment API Security Runtime configuration resource. Use the following structure in your request: `organizations/{org}/environments/{env}/apiSecurityRuntimeConfig`"
                }
              },
              "id": "apigee.organizations.environments.getApiSecurityRuntimeConfig"
            },
            "setIamPolicy": {
              "description": "Sets the IAM policy on an environment, if the policy already exists it will be replaced. For more information, see [Manage users, roles, and permissions using the API](https://cloud.google.com/apigee/docs/api-platform/system-administration/manage-users-roles). You must have the `apigee.environments.setIamPolicy` permission to call this API.",
              "httpMethod": "POST",
              "parameters": {
                "resource": {
                  "description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
                  "pattern": "^organizations/[^/]+/environments/[^/]+$",
                  "type": "string",
                  "location": "path",
                  "required": true
                }
              },
              "path": "v1/{+resource}:setIamPolicy",
              "response": {
                "$ref": "GoogleIamV1Policy"
              },
              "parameterOrder": [
                "resource"
              ],
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}:setIamPolicy",
              "request": {
                "$ref": "GoogleIamV1SetIamPolicyRequest"
              },
              "id": "apigee.organizations.environments.setIamPolicy",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "getIamPolicy": {
              "parameterOrder": [
                "resource"
              ],
              "httpMethod": "GET",
              "parameters": {
                "resource": {
                  "pattern": "^organizations/[^/]+/environments/[^/]+$",
                  "location": "path",
                  "type": "string",
                  "required": true,
                  "description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field."
                },
                "options.requestedPolicyVersion": {
                  "location": "query",
                  "type": "integer",
                  "description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
                  "format": "int32"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleIamV1Policy"
              },
              "path": "v1/{+resource}:getIamPolicy",
              "description": "Gets the IAM policy on an environment. For more information, see [Manage users, roles, and permissions using the API](https://cloud.google.com/apigee/docs/api-platform/system-administration/manage-users-roles). You must have the `apigee.environments.getIamPolicy` permission to call this API.",
              "id": "apigee.organizations.environments.getIamPolicy",
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}:getIamPolicy"
            },
            "updateDebugmask": {
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "required": true,
                  "location": "path",
                  "pattern": "^organizations/[^/]+/environments/[^/]+/debugmask$",
                  "type": "string",
                  "description": "Name of the debug mask."
                },
                "updateMask": {
                  "description": "Field debug mask to support partial updates.",
                  "type": "string",
                  "location": "query",
                  "format": "google-fieldmask"
                },
                "replaceRepeatedFields": {
                  "type": "boolean",
                  "description": "Boolean flag that specifies whether to replace existing values in the debug mask when doing an update. Set to true to replace existing values. The default behavior is to append the values (false).",
                  "location": "query"
                }
              },
              "description": "Updates the debug mask singleton resource for an environment.",
              "request": {
                "$ref": "GoogleCloudApigeeV1DebugMask"
              },
              "id": "apigee.organizations.environments.updateDebugmask",
              "path": "v1/{+name}",
              "response": {
                "$ref": "GoogleCloudApigeeV1DebugMask"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/debugmask",
              "parameterOrder": [
                "name"
              ]
            },
            "getDeployedConfig": {
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "required": true,
                  "type": "string",
                  "location": "path",
                  "pattern": "^organizations/[^/]+/environments/[^/]+/deployedConfig$",
                  "description": "Required. Name of the environment deployed configuration resource. Use the following structure in your request: `organizations/{org}/environments/{env}/deployedConfig`"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/deployedConfig",
              "id": "apigee.organizations.environments.getDeployedConfig",
              "response": {
                "$ref": "GoogleCloudApigeeV1EnvironmentConfig"
              },
              "description": "Gets the deployed configuration for an environment.",
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}"
            },
            "getSecurityActionsConfig": {
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/environments/[^/]+/securityActionsConfig$",
                  "type": "string",
                  "description": "Required. The name of the SecurityActionsConfig to retrieve. This will always be: `organizations/{org}/environments/{env}/security_actions_config`",
                  "location": "path",
                  "required": true
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "GetSecurityActionConfig returns the current SecurityActions configuration.",
              "id": "apigee.organizations.environments.getSecurityActionsConfig",
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityActionsConfig",
              "path": "v1/{+name}",
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityActionsConfig"
              }
            },
            "testIamPermissions": {
              "description": "Tests the permissions of a user on an environment, and returns a subset of permissions that the user has on the environment. If the environment does not exist, an empty permission set is returned (a NOT_FOUND error is not returned).",
              "path": "v1/{+resource}:testIamPermissions",
              "request": {
                "$ref": "GoogleIamV1TestIamPermissionsRequest"
              },
              "parameterOrder": [
                "resource"
              ],
              "response": {
                "$ref": "GoogleIamV1TestIamPermissionsResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}:testIamPermissions",
              "httpMethod": "POST",
              "parameters": {
                "resource": {
                  "type": "string",
                  "description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
                  "pattern": "^organizations/[^/]+/environments/[^/]+$",
                  "location": "path",
                  "required": true
                }
              },
              "id": "apigee.organizations.environments.testIamPermissions"
            },
            "getAddonsConfig": {
              "id": "apigee.organizations.environments.getAddonsConfig",
              "response": {
                "$ref": "GoogleCloudApigeeV1AddonsConfig"
              },
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "location": "path",
                  "pattern": "^organizations/[^/]+/environments/[^/]+/addonsConfig$",
                  "required": true,
                  "type": "string",
                  "description": "Required. Name of the add-ons config. Must be in the format of `/organizations/{org}/environments/{env}/addonsConfig`"
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/addonsConfig",
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "description": "Gets the add-ons config of an environment."
            },
            "subscribe": {
              "description": "Creates a subscription for the environment's Pub/Sub topic. The server will assign a random name for this subscription. The \"name\" and \"push_config\" must *not* be specified.",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "pattern": "^organizations/[^/]+/environments/[^/]+$",
                  "description": "Required. Name of the environment. Use the following structure in your request: `organizations/{org}/environments/{env}`",
                  "type": "string",
                  "location": "path",
                  "required": true
                }
              },
              "path": "v1/{+parent}:subscribe",
              "id": "apigee.organizations.environments.subscribe",
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1Subscription"
              },
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}:subscribe",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "create": {
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "description": "Optional. Name of the environment.",
                  "type": "string",
                  "location": "query"
                },
                "parent": {
                  "type": "string",
                  "description": "Required. Name of the organization in which the environment will be created. Use the following structure in your request: `organizations/{org}`",
                  "pattern": "^organizations/[^/]+$",
                  "required": true,
                  "location": "path"
                }
              },
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "flatPath": "v1/organizations/{organizationsId}/environments",
              "parameterOrder": [
                "parent"
              ],
              "description": "Creates an environment in an organization.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "apigee.organizations.environments.create",
              "request": {
                "$ref": "GoogleCloudApigeeV1Environment"
              },
              "path": "v1/{+parent}/environments"
            },
            "unsubscribe": {
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}:unsubscribe",
              "request": {
                "$ref": "GoogleCloudApigeeV1Subscription"
              },
              "response": {
                "$ref": "GoogleProtobufEmpty"
              },
              "description": "Deletes a subscription for the environment's Pub/Sub topic.",
              "id": "apigee.organizations.environments.unsubscribe",
              "path": "v1/{+parent}:unsubscribe",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "description": "Required. Name of the environment. Use the following structure in your request: `organizations/{org}/environments/{env}`",
                  "type": "string",
                  "location": "path",
                  "pattern": "^organizations/[^/]+/environments/[^/]+$",
                  "required": true
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "parent"
              ]
            },
            "modifyEnvironment": {
              "id": "apigee.organizations.environments.modifyEnvironment",
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}",
              "request": {
                "$ref": "GoogleCloudApigeeV1Environment"
              },
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "description": "Required. Name of the environment. Use the following structure in your request: `organizations/{org}/environments/{environment}`.",
                  "pattern": "^organizations/[^/]+/environments/[^/]+$"
                },
                "updateMask": {
                  "format": "google-fieldmask",
                  "location": "query",
                  "description": "List of fields to be updated. Fields that can be updated: node_config.",
                  "type": "string"
                }
              },
              "description": "Updates properties for an Apigee environment with patch semantics using a field mask. **Note:** Not supported for Apigee hybrid.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ]
            },
            "updateEnvironment": {
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/environments/[^/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "description": "Required. Name of the environment. Use the following structure in your request: `organizations/{org}/environments/{env}`"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "apigee.organizations.environments.updateEnvironment",
              "response": {
                "$ref": "GoogleCloudApigeeV1Environment"
              },
              "description": "Updates an existing environment. When updating properties, you must pass all existing properties to the API, even if they are not being changed. If you omit properties from the payload, the properties are removed. To get the current list of properties for the environment, use the [Get Environment API](get). **Note**: Both `PUT` and `POST` methods are supported for updating an existing environment.",
              "request": {
                "$ref": "GoogleCloudApigeeV1Environment"
              },
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}",
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}"
            },
            "update": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}",
              "description": "Updates an existing environment. When updating properties, you must pass all existing properties to the API, even if they are not being changed. If you omit properties from the payload, the properties are removed. To get the current list of properties for the environment, use the [Get Environment API](get). **Note**: Both `PUT` and `POST` methods are supported for updating an existing environment.",
              "httpMethod": "PUT",
              "parameters": {
                "name": {
                  "required": true,
                  "location": "path",
                  "description": "Required. Name of the environment. Use the following structure in your request: `organizations/{org}/environments/{env}`",
                  "type": "string",
                  "pattern": "^organizations/[^/]+/environments/[^/]+$"
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}",
              "id": "apigee.organizations.environments.update",
              "request": {
                "$ref": "GoogleCloudApigeeV1Environment"
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1Environment"
              }
            },
            "get": {
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}",
              "id": "apigee.organizations.environments.get",
              "response": {
                "$ref": "GoogleCloudApigeeV1Environment"
              },
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "description": "Gets environment details.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "type": "string",
                  "required": true,
                  "pattern": "^organizations/[^/]+/environments/[^/]+$",
                  "location": "path",
                  "description": "Required. Name of the environment. Use the following structure in your request: `organizations/{org}/environments/{env}`"
                }
              }
            },
            "getTraceConfig": {
              "id": "apigee.organizations.environments.getTraceConfig",
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "required": true,
                  "location": "path",
                  "type": "string",
                  "pattern": "^organizations/[^/]+/environments/[^/]+/traceConfig$",
                  "description": "Required. Name of the trace configuration. Use the following structure in your request: \"organizations/*/environments/*/traceConfig\"."
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/traceConfig",
              "description": "Get distributed trace configuration in an environment.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1TraceConfig"
              }
            },
            "updateTraceConfig": {
              "id": "apigee.organizations.environments.updateTraceConfig",
              "path": "v1/{+name}",
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/traceConfig",
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "description": "Required. Name of the trace configuration. Use the following structure in your request: \"organizations/*/environments/*/traceConfig\".",
                  "pattern": "^organizations/[^/]+/environments/[^/]+/traceConfig$"
                },
                "updateMask": {
                  "description": "List of fields to be updated.",
                  "location": "query",
                  "format": "google-fieldmask",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1TraceConfig"
              },
              "request": {
                "$ref": "GoogleCloudApigeeV1TraceConfig"
              },
              "description": "Updates the trace configurations in an environment. Note that the repeated fields have replace semantics when included in the field mask and that they will be overwritten by the value of the fields in the request body.",
              "parameterOrder": [
                "name"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "getDebugmask": {
              "parameterOrder": [
                "name"
              ],
              "id": "apigee.organizations.environments.getDebugmask",
              "description": "Gets the debug mask singleton resource for an environment.",
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/debugmask",
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1DebugMask"
              },
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/environments/[^/]+/debugmask$",
                  "description": "Required. Name of the debug mask. Use the following structure in your request: `organizations/{org}/environments/{env}/debugmask`.",
                  "required": true,
                  "location": "path",
                  "type": "string"
                }
              }
            },
            "updateSecurityActionsConfig": {
              "parameterOrder": [
                "name"
              ],
              "description": "UpdateSecurityActionConfig updates the current SecurityActions configuration. This method is used to enable/disable the feature at the environment level.",
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityActionsConfig"
              },
              "id": "apigee.organizations.environments.updateSecurityActionsConfig",
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "description": "This is a singleton resource, the name will always be set by SecurityActions and any user input will be ignored. The name is always: `organizations/{org}/environments/{env}/security_actions_config`",
                  "pattern": "^organizations/[^/]+/environments/[^/]+/securityActionsConfig$",
                  "type": "string"
                },
                "updateMask": {
                  "format": "google-fieldmask",
                  "type": "string",
                  "location": "query",
                  "description": "The list of fields to update."
                }
              },
              "path": "v1/{+name}",
              "request": {
                "$ref": "GoogleCloudApigeeV1SecurityActionsConfig"
              },
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityActionsConfig",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "delete": {
              "description": "Deletes an environment from an organization. **Warning: You must delete all key value maps and key value entries before you delete an environment.** Otherwise, if you re-create the environment the key value map entry operations will encounter encryption/decryption discrepancies.",
              "id": "apigee.organizations.environments.delete",
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}",
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "description": "Required. Name of the environment. Use the following structure in your request: `organizations/{org}/environments/{env}`",
                  "pattern": "^organizations/[^/]+/environments/[^/]+$",
                  "type": "string",
                  "location": "path",
                  "required": true
                }
              }
            }
          },
          "resources": {
            "analytics": {
              "resources": {
                "exports": {
                  "methods": {
                    "create": {
                      "parameterOrder": [
                        "parent"
                      ],
                      "request": {
                        "$ref": "GoogleCloudApigeeV1ExportRequest"
                      },
                      "path": "v1/{+parent}/analytics/exports",
                      "httpMethod": "POST",
                      "parameters": {
                        "parent": {
                          "type": "string",
                          "pattern": "^organizations/[^/]+/environments/[^/]+$",
                          "location": "path",
                          "required": true,
                          "description": "Required. Names of the parent organization and environment. Must be of the form `organizations/{org}/environments/{env}`."
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "description": "Submit a data export job to be processed in the background. If the request is successful, the API returns a 201 status, a URI that can be used to retrieve the status of the export job, and the `state` value of \"enqueued\".",
                      "id": "apigee.organizations.environments.analytics.exports.create",
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/analytics/exports",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Export"
                      }
                    },
                    "get": {
                      "description": "Gets the details and status of an analytics export job. If the export job is still in progress, its `state` is set to \"running\". After the export job has completed successfully, its `state` is set to \"completed\". If the export job fails, its `state` is set to `failed`.",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "id": "apigee.organizations.environments.analytics.exports.get",
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Export"
                      },
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/analytics/exports/{exportsId}",
                      "path": "v1/{+name}",
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "location": "path",
                          "required": true,
                          "pattern": "^organizations/[^/]+/environments/[^/]+/analytics/exports/[^/]+$",
                          "type": "string",
                          "description": "Required. Resource name of the export to get."
                        }
                      }
                    },
                    "list": {
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/analytics/exports",
                      "id": "apigee.organizations.environments.analytics.exports.list",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1ListExportsResponse"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "httpMethod": "GET",
                      "parameters": {
                        "parent": {
                          "type": "string",
                          "required": true,
                          "description": "Required. Names of the parent organization and environment. Must be of the form `organizations/{org}/environments/{env}`.",
                          "pattern": "^organizations/[^/]+/environments/[^/]+$",
                          "location": "path"
                        }
                      },
                      "description": "Lists the details and status of all analytics export jobs belonging to the parent organization and environment.",
                      "path": "v1/{+parent}/analytics/exports",
                      "parameterOrder": [
                        "parent"
                      ]
                    }
                  }
                },
                "admin": {
                  "methods": {
                    "getSchemav2": {
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "type": "string",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/analytics/admin/schemav2$",
                          "description": "Required. Path to the schema. Use the following structure in your request: `organizations/{org}/environments/{env}/analytics/admin/schemav2`.",
                          "location": "path",
                          "required": true
                        },
                        "disableCache": {
                          "location": "query",
                          "description": "Flag that specifies whether the schema is be read from the database or cache. Set to `true` to read the schema from the database. Defaults to cache.",
                          "type": "boolean"
                        },
                        "type": {
                          "location": "query",
                          "type": "string",
                          "description": "Required. Name of the dataset for which you want to retrieve the schema. For example: `fact` or `agg_cus1`"
                        }
                      },
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Schema"
                      },
                      "id": "apigee.organizations.environments.analytics.admin.getSchemav2",
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/analytics/admin/schemav2",
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "path": "v1/{+name}",
                      "description": "Gets a list of metrics and dimensions that can be used to create analytics queries and reports. Each schema element contains the name of the field, its associated type, and a flag indicating whether it is a standard or custom field."
                    }
                  }
                }
              }
            },
            "archiveDeployments": {
              "methods": {
                "delete": {
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/archiveDeployments/{archiveDeploymentsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "description": "Deletes an archive deployment.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "description": "Required. Name of the Archive Deployment in the following format: `organizations/{org}/environments/{env}/archiveDeployments/{id}`.",
                      "type": "string",
                      "location": "path",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/archiveDeployments/[^/]+$",
                      "required": true
                    }
                  },
                  "response": {
                    "$ref": "GoogleProtobufEmpty"
                  },
                  "id": "apigee.organizations.environments.archiveDeployments.delete"
                },
                "generateUploadUrl": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Generates a signed URL for uploading an Archive zip file to Google Cloud Storage. Once the upload is complete, the signed URL should be passed to CreateArchiveDeployment. When uploading to the generated signed URL, please follow these restrictions: * Source file type should be a zip file. * Source file size should not exceed 1GB limit. * No credentials should be attached - the signed URLs provide access to the target bucket using internal service identity; if credentials were attached, the identity from the credentials would be used, but that identity does not have permissions to upload files to the URL. When making a HTTP PUT request, these two headers need to be specified: * `content-type: application/zip` * `x-goog-content-length-range: 0,1073741824` And this header SHOULD NOT be specified: * `Authorization: Bearer YOUR_TOKEN`",
                  "path": "v1/{+parent}/archiveDeployments:generateUploadUrl",
                  "id": "apigee.organizations.environments.archiveDeployments.generateUploadUrl",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1GenerateUploadUrlResponse"
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1GenerateUploadUrlRequest"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "description": "Required. The organization and environment to upload to."
                    }
                  },
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/archiveDeployments:generateUploadUrl"
                },
                "create": {
                  "path": "v1/{+parent}/archiveDeployments",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/archiveDeployments",
                  "id": "apigee.organizations.environments.archiveDeployments.create",
                  "description": "Creates a new ArchiveDeployment.",
                  "response": {
                    "$ref": "GoogleLongrunningOperation"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "required": true,
                      "location": "path",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "description": "Required. The Environment this Archive Deployment will be created in."
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "parent"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1ArchiveDeployment"
                  }
                },
                "patch": {
                  "path": "v1/{+name}",
                  "id": "apigee.organizations.environments.archiveDeployments.patch",
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/archiveDeployments/{archiveDeploymentsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Updates an existing ArchiveDeployment. Labels can modified but most of the other fields are not modifiable.",
                  "httpMethod": "PATCH",
                  "parameters": {
                    "name": {
                      "description": "Name of the Archive Deployment in the following format: `organizations/{org}/environments/{env}/archiveDeployments/{id}`.",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/archiveDeployments/[^/]+$",
                      "type": "string",
                      "location": "path",
                      "required": true
                    },
                    "updateMask": {
                      "location": "query",
                      "type": "string",
                      "description": "Required. The list of fields to be updated.",
                      "format": "google-fieldmask"
                    }
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ArchiveDeployment"
                  },
                  "request": {
                    "$ref": "GoogleCloudApigeeV1ArchiveDeployment"
                  }
                },
                "list": {
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/archiveDeployments",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "pageToken": {
                      "location": "query",
                      "description": "Optional. Page token, returned from a previous ListArchiveDeployments call, that you can use to retrieve the next page.",
                      "type": "string"
                    },
                    "parent": {
                      "location": "path",
                      "required": true,
                      "description": "Required. Name of the Environment for which to list Archive Deployments in the format: `organizations/{org}/environments/{env}`.",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "type": "string"
                    },
                    "filter": {
                      "type": "string",
                      "description": "Optional. An optional query used to return a subset of Archive Deployments using the semantics defined in https://google.aip.dev/160.",
                      "location": "query"
                    },
                    "pageSize": {
                      "format": "int32",
                      "location": "query",
                      "type": "integer",
                      "description": "Optional. Maximum number of Archive Deployments to return. If unspecified, at most 25 deployments will be returned."
                    }
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListArchiveDeploymentsResponse"
                  },
                  "path": "v1/{+parent}/archiveDeployments",
                  "id": "apigee.organizations.environments.archiveDeployments.list",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Lists the ArchiveDeployments in the specified Environment."
                },
                "generateDownloadUrl": {
                  "path": "v1/{+name}:generateDownloadUrl",
                  "description": "Generates a signed URL for downloading the original zip file used to create an Archive Deployment. The URL is only valid for a limited period and should be used within minutes after generation. Each call returns a new upload URL.",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1GenerateDownloadUrlRequest"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "required": true,
                      "location": "path",
                      "description": "Required. The name of the Archive Deployment you want to download.",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/archiveDeployments/[^/]+$"
                    }
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1GenerateDownloadUrlResponse"
                  },
                  "id": "apigee.organizations.environments.archiveDeployments.generateDownloadUrl",
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/archiveDeployments/{archiveDeploymentsId}:generateDownloadUrl"
                },
                "get": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ArchiveDeployment"
                  },
                  "description": "Gets the specified ArchiveDeployment.",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/archiveDeployments/{archiveDeploymentsId}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+/archiveDeployments/[^/]+$",
                      "description": "Required. Name of the Archive Deployment in the following format: `organizations/{org}/environments/{env}/archiveDeployments/{id}`.",
                      "type": "string",
                      "location": "path",
                      "required": true
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "apigee.organizations.environments.archiveDeployments.get",
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                }
              }
            },
            "resourcefiles": {
              "methods": {
                "update": {
                  "request": {
                    "$ref": "GoogleApiHttpBody"
                  },
                  "httpMethod": "PUT",
                  "parameters": {
                    "type": {
                      "required": true,
                      "description": "Required. Resource file type. {{ resource_file_type }}",
                      "type": "string",
                      "location": "path"
                    },
                    "name": {
                      "type": "string",
                      "description": "Required. ID of the resource file to update. Must match the regular expression: [a-zA-Z0-9:/\\\\!@#$%^&{}\\[\\]()+\\-=,.~'` ]{1,255}",
                      "required": true,
                      "location": "path"
                    },
                    "parent": {
                      "location": "path",
                      "description": "Required. Name of the environment in the following format: `organizations/{org}/environments/{env}`.",
                      "required": true,
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$"
                    }
                  },
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/resourcefiles/{type}/{name}",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ResourceFile"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+parent}/resourcefiles/{type}/{name}",
                  "id": "apigee.organizations.environments.resourcefiles.update",
                  "parameterOrder": [
                    "parent",
                    "type",
                    "name"
                  ],
                  "description": "Updates a resource file. Specify the `Content-Type` as `application/octet-stream` or `multipart/form-data`. For more information about resource files, see [Resource files](https://cloud.google.com/apigee/docs/api-platform/develop/resource-files)."
                },
                "list": {
                  "path": "v1/{+parent}/resourcefiles",
                  "parameterOrder": [
                    "parent"
                  ],
                  "id": "apigee.organizations.environments.resourcefiles.list",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListEnvironmentResourcesResponse"
                  },
                  "description": "Lists all resource files, optionally filtering by type. For more information about resource files, see [Resource files](https://cloud.google.com/apigee/docs/api-platform/develop/resource-files).",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/resourcefiles",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "type": "string",
                      "description": "Required. Name of the environment in which to list resource files in the following format: `organizations/{org}/environments/{env}`.",
                      "required": true,
                      "location": "path"
                    },
                    "type": {
                      "location": "query",
                      "description": "Optional. Type of resource files to list. {{ resource_file_type }}",
                      "type": "string"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "listEnvironmentResources": {
                  "httpMethod": "GET",
                  "parameters": {
                    "type": {
                      "required": true,
                      "location": "path",
                      "type": "string",
                      "description": "Optional. Type of resource files to list. {{ resource_file_type }}"
                    },
                    "parent": {
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "description": "Required. Name of the environment in which to list resource files in the following format: `organizations/{org}/environments/{env}`."
                    }
                  },
                  "description": "Lists all resource files, optionally filtering by type. For more information about resource files, see [Resource files](https://cloud.google.com/apigee/docs/api-platform/develop/resource-files).",
                  "path": "v1/{+parent}/resourcefiles/{type}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/resourcefiles/{type}",
                  "id": "apigee.organizations.environments.resourcefiles.listEnvironmentResources",
                  "parameterOrder": [
                    "parent",
                    "type"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListEnvironmentResourcesResponse"
                  }
                },
                "create": {
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/resourcefiles",
                  "parameterOrder": [
                    "parent"
                  ],
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. Name of the environment in which to create the resource file in the following format: `organizations/{org}/environments/{env}`.",
                      "required": true,
                      "location": "path",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$"
                    },
                    "type": {
                      "location": "query",
                      "description": "Required. Resource file type. {{ resource_file_type }}",
                      "type": "string"
                    },
                    "name": {
                      "type": "string",
                      "description": "Required. Name of the resource file. Must match the regular expression: [a-zA-Z0-9:/\\\\!@#$%^&{}\\[\\]()+\\-=,.~'` ]{1,255}",
                      "location": "query"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ResourceFile"
                  },
                  "description": "Creates a resource file. Specify the `Content-Type` as `application/octet-stream` or `multipart/form-data`. For more information about resource files, see [Resource files](https://cloud.google.com/apigee/docs/api-platform/develop/resource-files).",
                  "id": "apigee.organizations.environments.resourcefiles.create",
                  "request": {
                    "$ref": "GoogleApiHttpBody"
                  },
                  "path": "v1/{+parent}/resourcefiles"
                },
                "delete": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+parent}/resourcefiles/{type}/{name}",
                  "parameterOrder": [
                    "parent",
                    "type",
                    "name"
                  ],
                  "description": "Deletes a resource file. For more information about resource files, see [Resource files](https://cloud.google.com/apigee/docs/api-platform/develop/resource-files).",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ResourceFile"
                  },
                  "httpMethod": "DELETE",
                  "parameters": {
                    "type": {
                      "location": "path",
                      "description": "Required. Resource file type. {{ resource_file_type }}",
                      "required": true,
                      "type": "string"
                    },
                    "parent": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "type": "string",
                      "description": "Required. Name of the environment in the following format: `organizations/{org}/environments/{env}`.",
                      "location": "path",
                      "required": true
                    },
                    "name": {
                      "type": "string",
                      "location": "path",
                      "description": "Required. ID of the resource file to delete. Must match the regular expression: [a-zA-Z0-9:/\\\\!@#$%^&{}\\[\\]()+\\-=,.~'` ]{1,255}",
                      "required": true
                    }
                  },
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/resourcefiles/{type}/{name}",
                  "id": "apigee.organizations.environments.resourcefiles.delete"
                },
                "get": {
                  "response": {
                    "$ref": "GoogleApiHttpBody"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/resourcefiles/{type}/{name}",
                  "httpMethod": "GET",
                  "parameters": {
                    "type": {
                      "required": true,
                      "location": "path",
                      "description": "Required. Resource file type. {{ resource_file_type }}",
                      "type": "string"
                    },
                    "parent": {
                      "location": "path",
                      "description": "Required. Name of the environment in the following format: `organizations/{org}/environments/{env}`.",
                      "required": true,
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "type": "string"
                    },
                    "name": {
                      "required": true,
                      "location": "path",
                      "description": "Required. ID of the resource file. Must match the regular expression: [a-zA-Z0-9:/\\\\!@#$%^&{}\\[\\]()+\\-=,.~'` ]{1,255}",
                      "type": "string"
                    }
                  },
                  "description": "Gets the contents of a resource file. For more information about resource files, see [Resource files](https://cloud.google.com/apigee/docs/api-platform/develop/resource-files).",
                  "id": "apigee.organizations.environments.resourcefiles.get",
                  "path": "v1/{+parent}/resourcefiles/{type}/{name}",
                  "parameterOrder": [
                    "parent",
                    "type",
                    "name"
                  ]
                }
              }
            },
            "securityStats": {
              "methods": {
                "queryTimeSeriesStats": {
                  "id": "apigee.organizations.environments.securityStats.queryTimeSeriesStats",
                  "path": "v1/{+orgenv}/securityStats:queryTimeSeriesStats",
                  "description": "Retrieve security statistics as a collection of time series.",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1QueryTimeSeriesStatsRequest"
                  },
                  "parameterOrder": [
                    "orgenv"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1QueryTimeSeriesStatsResponse"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "orgenv": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "description": "Required. Should be of the form organizations//environments/.",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityStats:queryTimeSeriesStats"
                },
                "queryTabularStats": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityStats:queryTabularStats",
                  "description": "Retrieve security statistics as tabular rows.",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1QueryTabularStatsResponse"
                  },
                  "path": "v1/{+orgenv}/securityStats:queryTabularStats",
                  "id": "apigee.organizations.environments.securityStats.queryTabularStats",
                  "parameterOrder": [
                    "orgenv"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1QueryTabularStatsRequest"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "orgenv": {
                      "location": "path",
                      "required": true,
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "type": "string",
                      "description": "Required. Should be of the form organizations//environments/."
                    }
                  }
                }
              }
            },
            "securityReports": {
              "methods": {
                "getResult": {
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Required. Name of the security report result to get. Must be of the form `organizations/{org}/environments/{env}/securityReports/{reportId}/result`.",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/securityReports/[^/]+/result$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "id": "apigee.organizations.environments.securityReports.getResult",
                  "path": "v1/{+name}",
                  "description": "After the query is completed, use this API to retrieve the results as file. If the request succeeds, and there is a non-zero result set, the result is downloaded to the client as a zipped JSON file. The name of the downloaded file will be: OfflineQueryResult-.zip Example: `OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip`",
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityReports/{securityReportsId}/result",
                  "response": {
                    "$ref": "GoogleApiHttpBody"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "create": {
                  "id": "apigee.organizations.environments.securityReports.create",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1SecurityReport"
                  },
                  "path": "v1/{+parent}/securityReports",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. The parent resource name. Must be of the form `organizations/{org}/environments/{env}`.",
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$"
                    }
                  },
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityReports",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1SecurityReportQuery"
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Submit a report request to be processed in the background. If the submission succeeds, the API returns a 200 status and an ID that refer to the report request. In addition to the HTTP status 200, the `state` of \"enqueued\" means that the request succeeded."
                },
                "list": {
                  "description": "Return a list of Security Reports",
                  "path": "v1/{+parent}/securityReports",
                  "parameterOrder": [
                    "parent"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityReports",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.environments.securityReports.list",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListSecurityReportsResponse"
                  },
                  "httpMethod": "GET",
                  "parameters": {
                    "from": {
                      "location": "query",
                      "type": "string",
                      "description": "Filter response list by returning security reports that created after this date time. Time must be in ISO date-time format like '2011-12-03T10:15:30Z'."
                    },
                    "status": {
                      "description": "Filter response list by security reports status.",
                      "location": "query",
                      "type": "string"
                    },
                    "dataset": {
                      "type": "string",
                      "location": "query",
                      "description": "Filter response list by dataset. Example: `api`, `mint`"
                    },
                    "pageToken": {
                      "type": "string",
                      "description": "Token returned from the previous list response to fetch the next page.",
                      "location": "query"
                    },
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "format": "int32",
                      "description": "The maximum number of security report to return in the list response."
                    },
                    "parent": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "description": "Required. The parent resource name. Must be of the form `organizations/{org}/environments/{env}`.",
                      "required": true,
                      "location": "path"
                    },
                    "to": {
                      "location": "query",
                      "type": "string",
                      "description": "Filter response list by returning security reports that created before this date time. Time must be in ISO date-time format like '2011-12-03T10:16:30Z'."
                    },
                    "submittedBy": {
                      "type": "string",
                      "location": "query",
                      "description": "Filter response list by user who submitted queries."
                    }
                  }
                },
                "get": {
                  "path": "v1/{+name}",
                  "description": "Get security report status If the query is still in progress, the `state` is set to \"running\" After the query has completed successfully, `state` is set to \"completed\"",
                  "id": "apigee.organizations.environments.securityReports.get",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1SecurityReport"
                  },
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/securityReports/[^/]+$",
                      "description": "Required. Name of the security report to get. Must be of the form `organizations/{org}/environments/{env}/securityReports/{reportId}`."
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityReports/{securityReportsId}"
                },
                "getResultView": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.environments.securityReports.getResultView",
                  "path": "v1/{+name}",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityReports/{securityReportsId}/resultView",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "After the query is completed, use this API to view the query result when result size is small.",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1SecurityReportResultView"
                  },
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+/securityReports/[^/]+/resultView$",
                      "description": "Required. Name of the security report result view to get. Must be of the form `organizations/{org}/environments/{env}/securityReports/{reportId}/resultView`.",
                      "type": "string",
                      "required": true,
                      "location": "path"
                    }
                  }
                }
              }
            },
            "queries": {
              "methods": {
                "getResult": {
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. Name of the asynchronous query result to get. Must be of the form `organizations/{org}/environments/{env}/queries/{queryId}/result`.",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/queries/[^/]+/result$"
                    }
                  },
                  "description": "After the query is completed, use this API to retrieve the results. If the request succeeds, and there is a non-zero result set, the result is downloaded to the client as a zipped JSON file. The name of the downloaded file will be: OfflineQueryResult-.zip Example: `OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip`",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/queries/{queriesId}/result",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleApiHttpBody"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "id": "apigee.organizations.environments.queries.getResult"
                },
                "get": {
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "apigee.organizations.environments.queries.get",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1AsyncQuery"
                  },
                  "path": "v1/{+name}",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/queries/{queriesId}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Required. Name of the asynchronous query to get. Must be of the form `organizations/{org}/environments/{env}/queries/{queryId}`.",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/queries/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Get query status If the query is still in progress, the `state` is set to \"running\" After the query has completed successfully, `state` is set to \"completed\""
                },
                "create": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+parent}/queries",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "location": "path",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "required": true,
                      "description": "Required. The parent resource name. Must be of the form `organizations/{org}/environments/{env}`."
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "id": "apigee.organizations.environments.queries.create",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/queries",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1Query"
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1AsyncQuery"
                  },
                  "description": "Submit a query to be processed in the background. If the submission of the query succeeds, the API returns a 201 status and an ID that refer to the query. In addition to the HTTP status 201, the `state` of \"enqueued\" means that the request succeeded."
                },
                "list": {
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/queries",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListAsyncQueriesResponse"
                  },
                  "httpMethod": "GET",
                  "parameters": {
                    "from": {
                      "description": "Filter response list by returning asynchronous queries that created after this date time. Time must be in ISO date-time format like '2011-12-03T10:15:30Z'.",
                      "location": "query",
                      "type": "string"
                    },
                    "status": {
                      "description": "Filter response list by asynchronous query status.",
                      "location": "query",
                      "type": "string"
                    },
                    "to": {
                      "type": "string",
                      "description": "Filter response list by returning asynchronous queries that created before this date time. Time must be in ISO date-time format like '2011-12-03T10:16:30Z'.",
                      "location": "query"
                    },
                    "dataset": {
                      "location": "query",
                      "type": "string",
                      "description": "Filter response list by dataset. Example: `api`, `mint`"
                    },
                    "submittedBy": {
                      "location": "query",
                      "description": "Filter response list by user who submitted queries.",
                      "type": "string"
                    },
                    "parent": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "description": "Required. The parent resource name. Must be of the form `organizations/{org}/environments/{env}`.",
                      "type": "string",
                      "location": "path",
                      "required": true
                    },
                    "inclQueriesWithoutReport": {
                      "location": "query",
                      "type": "string",
                      "description": "Flag to include asynchronous queries that don't have a report denifition."
                    }
                  },
                  "description": "Return a list of Asynchronous Queries",
                  "id": "apigee.organizations.environments.queries.list",
                  "path": "v1/{+parent}/queries"
                },
                "getResulturl": {
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "apigee.organizations.environments.queries.getResulturl",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+/queries/[^/]+/resulturl$",
                      "description": "Required. Name of the asynchronous query result to get. Must be of the form `organizations/{org}/environments/{env}/queries/{queryId}/resulturl`.",
                      "type": "string",
                      "location": "path",
                      "required": true
                    }
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1GetAsyncQueryResultUrlResponse"
                  },
                  "description": "After the query is completed, use this API to retrieve the results. If the request succeeds, and there is a non-zero result set, the result is sent to the client as a list of urls to JSON files.",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/queries/{queriesId}/resulturl",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}"
                }
              }
            },
            "keystores": {
              "methods": {
                "delete": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Keystore"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keystores/{keystoresId}",
                  "path": "v1/{+name}",
                  "description": "Deletes a keystore or truststore.",
                  "id": "apigee.organizations.environments.keystores.delete",
                  "parameterOrder": [
                    "name"
                  ],
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+/keystores/[^/]+$",
                      "type": "string",
                      "description": "Required. Name of the keystore. Use the following format in your request: `organizations/{org}/environments/{env}/keystores/{keystore}`",
                      "location": "path",
                      "required": true
                    }
                  }
                },
                "get": {
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/keystores/[^/]+$",
                      "location": "path",
                      "required": true,
                      "description": "Required. Name of the keystore. Use the following format in your request: `organizations/{org}/environments/{env}/keystores/{keystore}`."
                    }
                  },
                  "id": "apigee.organizations.environments.keystores.get",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keystores/{keystoresId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Keystore"
                  },
                  "description": "Gets a keystore or truststore."
                },
                "create": {
                  "description": "Creates a keystore or truststore. - Keystore: Contains certificates and their associated keys. - Truststore: Contains trusted certificates used to validate a server's certificate. These certificates are typically self-signed certificates or certificates that are not signed by a trusted CA.",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "location": "query",
                      "description": "Optional. Name of the keystore. Overrides the value in Keystore."
                    },
                    "parent": {
                      "description": "Required. Name of the environment in which to create the keystore. Use the following format in your request: `organizations/{org}/environments/{env}`",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "id": "apigee.organizations.environments.keystores.create",
                  "parameterOrder": [
                    "parent"
                  ],
                  "path": "v1/{+parent}/keystores",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keystores",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Keystore"
                  },
                  "request": {
                    "$ref": "GoogleCloudApigeeV1Keystore"
                  }
                }
              },
              "resources": {
                "aliases": {
                  "methods": {
                    "csr": {
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keystores/{keystoresId}/aliases/{aliasesId}/csr",
                      "path": "v1/{+name}/csr",
                      "response": {
                        "$ref": "GoogleApiHttpBody"
                      },
                      "id": "apigee.organizations.environments.keystores.aliases.csr",
                      "description": "Generates a PKCS #10 Certificate Signing Request for the private key in an alias.",
                      "parameterOrder": [
                        "name"
                      ],
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "type": "string",
                          "required": true,
                          "location": "path",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/keystores/[^/]+/aliases/[^/]+$",
                          "description": "Required. Name of the alias. Use the following format in your request: `organizations/{org}/environments/{env}/keystores/{keystore}/aliases/{alias}`."
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "update": {
                      "httpMethod": "PUT",
                      "parameters": {
                        "ignoreExpiryValidation": {
                          "location": "query",
                          "type": "boolean",
                          "description": "Required. Flag that specifies whether to ignore expiry validation. If set to `true`, no expiry validation will be performed."
                        },
                        "ignoreNewlineValidation": {
                          "type": "boolean",
                          "location": "query",
                          "description": "Flag that specifies whether to ignore newline validation. If set to `true`, no error is thrown when the file contains a certificate chain with no newline between each certificate. Defaults to `false`."
                        },
                        "name": {
                          "description": "Required. Name of the alias. Use the following format in your request: `organizations/{org}/environments/{env}/keystores/{keystore}/aliases/{alias}`",
                          "type": "string",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/keystores/[^/]+/aliases/[^/]+$",
                          "location": "path",
                          "required": true
                        }
                      },
                      "path": "v1/{+name}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Alias"
                      },
                      "id": "apigee.organizations.environments.keystores.aliases.update",
                      "request": {
                        "$ref": "GoogleApiHttpBody"
                      },
                      "parameterOrder": [
                        "name"
                      ],
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keystores/{keystoresId}/aliases/{aliasesId}",
                      "description": "Updates the certificate in an alias. The updated certificate must be in PEM- or DER-encoded X.509 format."
                    },
                    "get": {
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Alias"
                      },
                      "id": "apigee.organizations.environments.keystores.aliases.get",
                      "parameterOrder": [
                        "name"
                      ],
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keystores/{keystoresId}/aliases/{aliasesId}",
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "type": "string",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/keystores/[^/]+/aliases/[^/]+$",
                          "description": "Required. Name of the alias. Use the following format in your request: `organizations/{org}/environments/{env}/keystores/{keystore}/aliases/{alias}`.",
                          "required": true,
                          "location": "path"
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "path": "v1/{+name}",
                      "description": "Gets an alias."
                    },
                    "delete": {
                      "httpMethod": "DELETE",
                      "parameters": {
                        "name": {
                          "required": true,
                          "location": "path",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/keystores/[^/]+/aliases/[^/]+$",
                          "type": "string",
                          "description": "Required. Name of the alias. Use the following format in your request: `organizations/{org}/environments/{env}/keystores/{keystore}/aliases/{alias}`."
                        }
                      },
                      "parameterOrder": [
                        "name"
                      ],
                      "id": "apigee.organizations.environments.keystores.aliases.delete",
                      "path": "v1/{+name}",
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keystores/{keystoresId}/aliases/{aliasesId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "description": "Deletes an alias.",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Alias"
                      }
                    },
                    "getCertificate": {
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "id": "apigee.organizations.environments.keystores.aliases.getCertificate",
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "required": true,
                          "pattern": "^organizations/[^/]+/environments/[^/]+/keystores/[^/]+/aliases/[^/]+$",
                          "location": "path",
                          "description": "Required. Name of the alias. Use the following format in your request: `organizations/{org}/environments/{env}/keystores/{keystore}/aliases/{alias}`.",
                          "type": "string"
                        }
                      },
                      "description": "Gets the certificate from an alias in PEM-encoded form.",
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keystores/{keystoresId}/aliases/{aliasesId}/certificate",
                      "path": "v1/{+name}/certificate",
                      "response": {
                        "$ref": "GoogleApiHttpBody"
                      },
                      "parameterOrder": [
                        "name"
                      ]
                    },
                    "create": {
                      "parameterOrder": [
                        "parent"
                      ],
                      "id": "apigee.organizations.environments.keystores.aliases.create",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Alias"
                      },
                      "path": "v1/{+parent}/aliases",
                      "request": {
                        "$ref": "GoogleApiHttpBody"
                      },
                      "description": "Creates an alias from a key/certificate pair. The structure of the request is controlled by the `format` query parameter: - `keycertfile` - Separate PEM-encoded key and certificate files are uploaded. Set `Content-Type: multipart/form-data` and include the `keyFile`, `certFile`, and `password` (if keys are encrypted) fields in the request body. If uploading to a truststore, omit `keyFile`. - `pkcs12` - A PKCS12 file is uploaded. Set `Content-Type: multipart/form-data`, provide the file in the `file` field, and include the `password` field if the file is encrypted in the request body. - `selfsignedcert` - A new private key and certificate are generated. Set `Content-Type: application/json` and include CertificateGenerationSpec in the request body.",
                      "httpMethod": "POST",
                      "parameters": {
                        "ignoreExpiryValidation": {
                          "type": "boolean",
                          "description": "Flag that specifies whether to ignore expiry validation. If set to `true`, no expiry validation will be performed.",
                          "location": "query"
                        },
                        "ignoreNewlineValidation": {
                          "description": "Flag that specifies whether to ignore newline validation. If set to `true`, no error is thrown when the file contains a certificate chain with no newline between each certificate. Defaults to `false`.",
                          "location": "query",
                          "type": "boolean"
                        },
                        "alias": {
                          "location": "query",
                          "type": "string",
                          "description": "Alias for the key/certificate pair. Values must match the regular expression `[\\w\\s-.]{1,255}`. This must be provided for all formats except `selfsignedcert`; self-signed certs may specify the alias in either this parameter or the JSON body."
                        },
                        "parent": {
                          "pattern": "^organizations/[^/]+/environments/[^/]+/keystores/[^/]+$",
                          "location": "path",
                          "required": true,
                          "type": "string",
                          "description": "Required. Name of the keystore. Use the following format in your request: `organizations/{org}/environments/{env}/keystores/{keystore}`."
                        },
                        "format": {
                          "type": "string",
                          "location": "query",
                          "description": "Required. Format of the data. Valid values include: `selfsignedcert`, `keycertfile`, or `pkcs12`"
                        },
                        "_password": {
                          "location": "query",
                          "description": "DEPRECATED: For improved security, specify the password in the request body instead of using the query parameter. To specify the password in the request body, set `Content-type: multipart/form-data` part with name `password`. Password for the private key file, if required.",
                          "type": "string"
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keystores/{keystoresId}/aliases"
                    }
                  }
                }
              }
            },
            "stats": {
              "methods": {
                "get": {
                  "description": "Retrieve metrics grouped by dimensions. The types of metrics you can retrieve include traffic, message counts, API call latency, response size, and cache hits and counts. Dimensions let you view metrics in meaningful groups. You can optionally pass dimensions as path parameters to the `stats` API. If dimensions are not specified, the metrics are computed on the entire set of data for the given time range.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+/stats/.*$",
                      "description": "Required. Resource name for which the interactive query will be executed. Use the following format in your request: `organizations/{org}/environments/{env}/stats/{dimensions}` Dimensions let you view metrics in meaningful groupings, such as `apiproxy` or `target_host`. The value of dimensions should be a comma-separated list, as shown below: `organizations/{org}/environments/{env}/stats/apiproxy,request_verb`",
                      "type": "string",
                      "required": true,
                      "location": "path"
                    },
                    "tzo": {
                      "location": "query",
                      "type": "string",
                      "description": "Timezone offset value."
                    },
                    "sortby": {
                      "description": "Comma-separated list of metrics to sort the final result.",
                      "type": "string",
                      "location": "query"
                    },
                    "tsAscending": {
                      "type": "boolean",
                      "location": "query",
                      "description": "Flag that specifies whether to list timestamps in ascending (`true`) or descending (`false`) order. Apigee recommends that you set this value to `true` if you are using `sortby` with `sort=DESC`."
                    },
                    "select": {
                      "location": "query",
                      "description": "Comma-separated list of metrics. For example: `sum(message_count),sum(error_count)`",
                      "type": "string"
                    },
                    "limit": {
                      "type": "string",
                      "description": "Maximum number of result items to return.",
                      "location": "query"
                    },
                    "topk": {
                      "description": "Top number of results to return. For example, to return the top 5 results, set `topk=5`.",
                      "location": "query",
                      "type": "string"
                    },
                    "aggTable": {
                      "location": "query",
                      "description": "Table name used to query custom aggregate tables. If this parameter is skipped, then Apigee will try to retrieve the data from fact tables which will be expensive.",
                      "type": "string"
                    },
                    "timeUnit": {
                      "type": "string",
                      "description": "Granularity of metrics returned. Valid values include: `second`, `minute`, `hour`, `day`, `week`, or` month`.",
                      "location": "query"
                    },
                    "filter": {
                      "location": "query",
                      "type": "string",
                      "description": "Filter that enables you to drill down on specific dimension values."
                    },
                    "realtime": {
                      "location": "query",
                      "type": "boolean",
                      "description": "No longer used by Apigee. Supported for backwards compatibility."
                    },
                    "sonar": {
                      "type": "boolean",
                      "description": "Routes the query to API Monitoring for the last hour.",
                      "location": "query"
                    },
                    "sort": {
                      "location": "query",
                      "type": "string",
                      "description": "Flag that specifies whether the sort order should be ascending or descending. Valid values include: `DESC` and `ASC`."
                    },
                    "timeRange": {
                      "type": "string",
                      "location": "query",
                      "description": "Time interval for the interactive query. Time range is specified in GMT as `start~end`. For example: `04/15/2017 00:00~05/15/2017 23:59`"
                    },
                    "offset": {
                      "type": "string",
                      "location": "query",
                      "description": "Offset value. Use `offset` with `limit` to enable pagination of results. For example, to display results 11-20, set limit to `10` and offset to `10`."
                    },
                    "accuracy": {
                      "type": "string",
                      "location": "query",
                      "description": "No longer used by Apigee. Supported for backwards compatibility."
                    }
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Stats"
                  },
                  "id": "apigee.organizations.environments.stats.get",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/stats/{statsId}",
                  "parameterOrder": [
                    "name"
                  ]
                }
              }
            },
            "traceConfig": {
              "resources": {
                "overrides": {
                  "methods": {
                    "patch": {
                      "request": {
                        "$ref": "GoogleCloudApigeeV1TraceConfigOverride"
                      },
                      "id": "apigee.organizations.environments.traceConfig.overrides.patch",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1TraceConfigOverride"
                      },
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/traceConfig/overrides/{overridesId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameterOrder": [
                        "name"
                      ],
                      "description": "Updates a distributed trace configuration override. Note that the repeated fields have replace semantics when included in the field mask and that they will be overwritten by the value of the fields in the request body.",
                      "httpMethod": "PATCH",
                      "parameters": {
                        "name": {
                          "description": "Required. Name of the trace configuration override. Use the following structure in your request: \"organizations/*/environments/*/traceConfig/overrides/*\".",
                          "required": true,
                          "type": "string",
                          "location": "path",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/traceConfig/overrides/[^/]+$"
                        },
                        "updateMask": {
                          "description": "List of fields to be updated.",
                          "location": "query",
                          "type": "string",
                          "format": "google-fieldmask"
                        }
                      },
                      "path": "v1/{+name}"
                    },
                    "get": {
                      "id": "apigee.organizations.environments.traceConfig.overrides.get",
                      "path": "v1/{+name}",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1TraceConfigOverride"
                      },
                      "description": "Gets a trace configuration override.",
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "type": "string",
                          "description": "Required. Name of the trace configuration override. Use the following structure in your request: \"organizations/*/environments/*/traceConfig/overrides/*\".",
                          "location": "path",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/traceConfig/overrides/[^/]+$",
                          "required": true
                        }
                      },
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/traceConfig/overrides/{overridesId}"
                    },
                    "list": {
                      "id": "apigee.organizations.environments.traceConfig.overrides.list",
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/traceConfig/overrides",
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1ListTraceConfigOverridesResponse"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "path": "v1/{+parent}/overrides",
                      "description": "Lists all of the distributed trace configuration overrides in an environment.",
                      "httpMethod": "GET",
                      "parameters": {
                        "pageSize": {
                          "type": "integer",
                          "format": "int32",
                          "description": "Maximum number of trace configuration overrides to return. If not specified, the maximum number returned is 25. The maximum number cannot exceed 100.",
                          "location": "query"
                        },
                        "parent": {
                          "pattern": "^organizations/[^/]+/environments/[^/]+/traceConfig$",
                          "description": "Required. Parent resource of the trace configuration override. Use the following structure in your request: \"organizations/*/environments/*/traceConfig\".",
                          "location": "path",
                          "required": true,
                          "type": "string"
                        },
                        "pageToken": {
                          "location": "query",
                          "description": "A page token, returned from a previous `ListTraceConfigOverrides` call. Token value that can be used to retrieve the subsequent page. When paginating, all other parameters provided to `ListTraceConfigOverrides` must match those specified in the call to obtain the page token.",
                          "type": "string"
                        }
                      }
                    },
                    "create": {
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1TraceConfigOverride"
                      },
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/traceConfig/overrides",
                      "id": "apigee.organizations.environments.traceConfig.overrides.create",
                      "description": "Creates a trace configuration override. The response contains a system-generated UUID, that can be used to view, update, or delete the configuration override. Use the List API to view the existing trace configuration overrides.",
                      "request": {
                        "$ref": "GoogleCloudApigeeV1TraceConfigOverride"
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "path": "v1/{+parent}/overrides",
                      "httpMethod": "POST",
                      "parameters": {
                        "parent": {
                          "pattern": "^organizations/[^/]+/environments/[^/]+/traceConfig$",
                          "description": "Required. Parent resource of the trace configuration override. Use the following structure in your request. \"organizations/*/environments/*/traceConfig\".",
                          "location": "path",
                          "type": "string",
                          "required": true
                        }
                      }
                    },
                    "delete": {
                      "path": "v1/{+name}",
                      "description": "Deletes a distributed trace configuration override.",
                      "httpMethod": "DELETE",
                      "parameters": {
                        "name": {
                          "type": "string",
                          "location": "path",
                          "required": true,
                          "description": "Required. Name of the trace configuration override. Use the following structure in your request: \"organizations/*/environments/*/traceConfig/overrides/*\".",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/traceConfig/overrides/[^/]+$"
                        }
                      },
                      "response": {
                        "$ref": "GoogleProtobufEmpty"
                      },
                      "parameterOrder": [
                        "name"
                      ],
                      "id": "apigee.organizations.environments.traceConfig.overrides.delete",
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/traceConfig/overrides/{overridesId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    }
                  }
                }
              }
            },
            "optimizedStats": {
              "methods": {
                "get": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "offset": {
                      "location": "query",
                      "description": "Offset value. Use `offset` with `limit` to enable pagination of results. For example, to display results 11-20, set limit to `10` and offset to `10`.",
                      "type": "string"
                    },
                    "tzo": {
                      "location": "query",
                      "description": "Timezone offset value.",
                      "type": "string"
                    },
                    "filter": {
                      "location": "query",
                      "type": "string",
                      "description": "Filter that enables you to drill-down on specific dimension values."
                    },
                    "tsAscending": {
                      "type": "boolean",
                      "location": "query",
                      "description": "Flag that specifies whether to list timestamps in ascending (`true`) or descending (`false`) order. Apigee recommends setting this value to `true` if you are using `sortby` with `sort=DESC`."
                    },
                    "limit": {
                      "location": "query",
                      "description": "Maximum number of result items to return.",
                      "type": "string"
                    },
                    "sort": {
                      "type": "string",
                      "description": "Flag that specifies whether the sort order should be ascending or descending. Valid values include `DESC` and `ASC`.",
                      "location": "query"
                    },
                    "topk": {
                      "location": "query",
                      "type": "string",
                      "description": "Top number of results to return. For example, to return the top 5 results, set `topk=5`."
                    },
                    "sonar": {
                      "description": "Routes the query to API Monitoring for the last hour.",
                      "location": "query",
                      "type": "boolean"
                    },
                    "select": {
                      "description": "Required. Comma-separated list of metrics. For example: `sum(message_count),sum(error_count)`",
                      "location": "query",
                      "type": "string"
                    },
                    "accuracy": {
                      "location": "query",
                      "type": "string",
                      "description": "No longer used by Apigee. Supported for backwards compatibility."
                    },
                    "sortby": {
                      "type": "string",
                      "description": "Comma-separated list of metrics to sort the final result.",
                      "location": "query"
                    },
                    "name": {
                      "description": "Required. Resource name for which the interactive query will be executed. Use the following format in your request: `organizations/{org}/environments/{env}/optimizedStats/{dimensions}` Dimensions let you view metrics in meaningful groupings, such as `apiproxy`, `target_host`. The value of `dimensions` should be a comma-separated list as shown below: `organizations/{org}/environments/{env}/optimizedStats/apiproxy,request_verb`",
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "pattern": "^organizations/[^/]+/environments/[^/]+/optimizedStats/.*$"
                    },
                    "timeUnit": {
                      "type": "string",
                      "location": "query",
                      "description": "Granularity of metrics returned. Valid values include: `second`, `minute`, `hour`, `day`, `week`, or `month`."
                    },
                    "aggTable": {
                      "type": "string",
                      "description": "Table name used to query custom aggregate tables. If this parameter is skipped, then Apigee will try to retrieve the data from fact tables which will be expensive.",
                      "location": "query"
                    },
                    "timeRange": {
                      "location": "query",
                      "description": "Required. Time interval for the interactive query. Time range is specified in GMT as `start~end`. For example: `04/15/2017 00:00~05/15/2017 23:59`",
                      "type": "string"
                    },
                    "realtime": {
                      "location": "query",
                      "description": "No longer used by Apigee. Supported for backwards compatibility.",
                      "type": "boolean"
                    }
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1OptimizedStats"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/optimizedStats/{optimizedStatsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "id": "apigee.organizations.environments.optimizedStats.get",
                  "description": "Similar to GetStats except that the response is less verbose."
                }
              }
            },
            "caches": {
              "methods": {
                "delete": {
                  "id": "apigee.organizations.environments.caches.delete",
                  "description": "Deletes a cache.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "required": true,
                      "location": "path",
                      "type": "string",
                      "description": "Required. Cache resource name of the form: `organizations/{organization_id}/environments/{environment_id}/caches/{cache_id}`",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/caches/[^/]+$"
                    }
                  },
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/caches/{cachesId}",
                  "response": {
                    "$ref": "GoogleProtobufEmpty"
                  }
                }
              }
            },
            "flowhooks": {
              "methods": {
                "detachSharedFlowFromFlowHook": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1FlowHook"
                  },
                  "description": "Detaches a shared flow from a flow hook.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/flowhooks/{flowhooksId}",
                  "id": "apigee.organizations.environments.flowhooks.detachSharedFlowFromFlowHook",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+/flowhooks/[^/]+$",
                      "description": "Required. Name of the flow hook to detach in the following format: `organizations/{org}/environments/{env}/flowhooks/{flowhook}`",
                      "type": "string",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}"
                },
                "get": {
                  "description": "Returns the name of the shared flow attached to the specified flow hook. If there's no shared flow attached to the flow hook, the API does not return an error; it simply does not return a name in the response.",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1FlowHook"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/flowhooks/{flowhooksId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "required": true,
                      "pattern": "^organizations/[^/]+/environments/[^/]+/flowhooks/[^/]+$",
                      "location": "path",
                      "type": "string",
                      "description": "Required. Name of the flow hook in the following format: `organizations/{org}/environments/{env}/flowhooks/{flowhook}`"
                    }
                  },
                  "id": "apigee.organizations.environments.flowhooks.get",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}"
                },
                "attachSharedFlowToFlowHook": {
                  "httpMethod": "PUT",
                  "parameters": {
                    "name": {
                      "description": "Required. Name of the flow hook to which the shared flow should be attached in the following format: `organizations/{org}/environments/{env}/flowhooks/{flowhook}`",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/flowhooks/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1FlowHook"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "apigee.organizations.environments.flowhooks.attachSharedFlowToFlowHook",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/flowhooks/{flowhooksId}",
                  "description": "Attaches a shared flow to a flow hook.",
                  "path": "v1/{+name}",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1FlowHook"
                  }
                }
              }
            },
            "sharedflows": {
              "resources": {
                "revisions": {
                  "methods": {
                    "undeploy": {
                      "id": "apigee.organizations.environments.sharedflows.revisions.undeploy",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/sharedflows/{sharedflowsId}/revisions/{revisionsId}/deployments",
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "GoogleProtobufEmpty"
                      },
                      "httpMethod": "DELETE",
                      "parameters": {
                        "name": {
                          "required": true,
                          "location": "path",
                          "description": "Required. Name of the shared flow revision to undeploy in the following format: `organizations/{org}/environments/{env}/sharedflows/{sharedflow}/revisions/{rev}` If the shared flow resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/sharedflows/[^/]+/revisions/[^/]+$",
                          "type": "string"
                        }
                      },
                      "path": "v1/{+name}/deployments",
                      "description": "Undeploys a shared flow revision from an environment. For a request path `organizations/{org}/environments/{env}/sharedflows/{sf}/revisions/{rev}/deployments`, two permissions are required: * `apigee.deployments.delete` on the resource `organizations/{org}/environments/{env}` * `apigee.sharedflowrevisions.undeploy` on the resource `organizations/{org}/sharedflows/{sf}/revisions/{rev}`"
                    },
                    "getDeployments": {
                      "parameterOrder": [
                        "name"
                      ],
                      "description": "Gets the deployment of a shared flow revision and actual state reported by runtime pods.",
                      "id": "apigee.organizations.environments.sharedflows.revisions.getDeployments",
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "pattern": "^organizations/[^/]+/environments/[^/]+/sharedflows/[^/]+/revisions/[^/]+$",
                          "description": "Required. Name representing a shared flow in an environment in the following format: `organizations/{org}/environments/{env}/sharedflows/{sharedflow}/revisions/{rev}` If the shared flow resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "type": "string",
                          "required": true,
                          "location": "path"
                        }
                      },
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/sharedflows/{sharedflowsId}/revisions/{revisionsId}/deployments",
                      "path": "v1/{+name}/deployments",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Deployment"
                      }
                    },
                    "deploy": {
                      "description": "Deploys a revision of a shared flow. If another revision of the same shared flow is currently deployed, set the `override` parameter to `true` to have this revision replace the currently deployed revision. You cannot use a shared flow until it has been deployed to an environment. For a request path `organizations/{org}/environments/{env}/sharedflows/{sf}/revisions/{rev}/deployments`, two permissions are required: * `apigee.deployments.create` on the resource `organizations/{org}/environments/{env}` * `apigee.sharedflowrevisions.deploy` on the resource `organizations/{org}/sharedflows/{sf}/revisions/{rev}`",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Deployment"
                      },
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/sharedflows/{sharedflowsId}/revisions/{revisionsId}/deployments",
                      "httpMethod": "POST",
                      "parameters": {
                        "name": {
                          "location": "path",
                          "required": true,
                          "description": "Required. Name of the shared flow revision to deploy in the following format: `organizations/{org}/environments/{env}/sharedflows/{sharedflow}/revisions/{rev}` If the shared flow resource being deployed has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/sharedflows/[^/]+/revisions/[^/]+$",
                          "type": "string"
                        },
                        "override": {
                          "description": "Flag that specifies whether the new deployment replaces other deployed revisions of the shared flow in the environment. Set `override` to `true` to replace other deployed revisions. By default, `override` is `false` and the deployment is rejected if other revisions of the shared flow are deployed in the environment.",
                          "location": "query",
                          "type": "boolean"
                        },
                        "serviceAccount": {
                          "type": "string",
                          "location": "query",
                          "description": "Google Cloud IAM service account. The service account represents the identity of the deployed proxy, and determines what permissions it has. The format must be `{ACCOUNT_ID}@{PROJECT}.iam.gserviceaccount.com`."
                        }
                      },
                      "id": "apigee.organizations.environments.sharedflows.revisions.deploy",
                      "path": "v1/{+name}/deployments",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameterOrder": [
                        "name"
                      ]
                    }
                  }
                },
                "deployments": {
                  "methods": {
                    "list": {
                      "httpMethod": "GET",
                      "parameters": {
                        "parent": {
                          "required": true,
                          "location": "path",
                          "description": "Required. Name representing a shared flow in an environment in the following format: `organizations/{org}/environments/{env}/sharedflows/{sharedflow}` If the shared flow resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "type": "string",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/sharedflows/[^/]+$"
                        }
                      },
                      "response": {
                        "$ref": "GoogleCloudApigeeV1ListDeploymentsResponse"
                      },
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/sharedflows/{sharedflowsId}/deployments",
                      "description": "Lists all deployments of a shared flow in an environment.",
                      "id": "apigee.organizations.environments.sharedflows.deployments.list",
                      "parameterOrder": [
                        "parent"
                      ],
                      "path": "v1/{+parent}/deployments",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    }
                  }
                }
              }
            },
            "apis": {
              "resources": {
                "revisions": {
                  "resources": {
                    "debugsessions": {
                      "resources": {
                        "data": {
                          "methods": {
                            "get": {
                              "httpMethod": "GET",
                              "parameters": {
                                "name": {
                                  "required": true,
                                  "location": "path",
                                  "pattern": "^organizations/[^/]+/environments/[^/]+/apis/[^/]+/revisions/[^/]+/debugsessions/[^/]+/data/[^/]+$",
                                  "description": "Required. The name of the debug session transaction. Must be of the form: `organizations/{organization}/environments/{environment}/apis/{api}/revisions/{revision}/debugsessions/{debug_session}/data/{transaction}`. If the API proxy resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                                  "type": "string"
                                }
                              },
                              "path": "v1/{+name}",
                              "scopes": [
                                "https://www.googleapis.com/auth/cloud-platform"
                              ],
                              "id": "apigee.organizations.environments.apis.revisions.debugsessions.data.get",
                              "parameterOrder": [
                                "name"
                              ],
                              "response": {
                                "$ref": "GoogleCloudApigeeV1DebugSessionTransaction"
                              },
                              "description": "Gets the debug data from a transaction.",
                              "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/apis/{apisId}/revisions/{revisionsId}/debugsessions/{debugsessionsId}/data/{dataId}"
                            }
                          }
                        }
                      },
                      "methods": {
                        "list": {
                          "httpMethod": "GET",
                          "parameters": {
                            "pageSize": {
                              "format": "int32",
                              "location": "query",
                              "type": "integer",
                              "description": "Optional. Maximum number of debug sessions to return. The page size defaults to 25."
                            },
                            "parent": {
                              "description": "Required. The name of the API Proxy revision deployment for which to list debug sessions. Must be of the form: `organizations/{organization}/environments/{environment}/apis/{api}/revisions/{revision}`. If the API proxy resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                              "location": "path",
                              "pattern": "^organizations/[^/]+/environments/[^/]+/apis/[^/]+/revisions/[^/]+$",
                              "required": true,
                              "type": "string"
                            },
                            "pageToken": {
                              "type": "string",
                              "description": "Optional. Page token, returned from a previous ListDebugSessions call, that you can use to retrieve the next page.",
                              "location": "query"
                            }
                          },
                          "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/apis/{apisId}/revisions/{revisionsId}/debugsessions",
                          "response": {
                            "$ref": "GoogleCloudApigeeV1ListDebugSessionsResponse"
                          },
                          "description": "Lists debug sessions that are currently active in the given API Proxy revision.",
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "parameterOrder": [
                            "parent"
                          ],
                          "path": "v1/{+parent}/debugsessions",
                          "id": "apigee.organizations.environments.apis.revisions.debugsessions.list"
                        },
                        "get": {
                          "httpMethod": "GET",
                          "parameters": {
                            "name": {
                              "pattern": "^organizations/[^/]+/environments/[^/]+/apis/[^/]+/revisions/[^/]+/debugsessions/[^/]+$",
                              "type": "string",
                              "description": "Required. The name of the debug session to retrieve. Must be of the form: `organizations/{organization}/environments/{environment}/apis/{api}/revisions/{revision}/debugsessions/{debug_session}`. If the API proxy resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                              "location": "path",
                              "required": true
                            }
                          },
                          "parameterOrder": [
                            "name"
                          ],
                          "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/apis/{apisId}/revisions/{revisionsId}/debugsessions/{debugsessionsId}",
                          "id": "apigee.organizations.environments.apis.revisions.debugsessions.get",
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "response": {
                            "$ref": "GoogleCloudApigeeV1DebugSession"
                          },
                          "description": "Retrieves a debug session.",
                          "path": "v1/{+name}"
                        },
                        "create": {
                          "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/apis/{apisId}/revisions/{revisionsId}/debugsessions",
                          "description": "Creates a debug session for a deployed API Proxy revision.",
                          "response": {
                            "$ref": "GoogleCloudApigeeV1DebugSession"
                          },
                          "request": {
                            "$ref": "GoogleCloudApigeeV1DebugSession"
                          },
                          "path": "v1/{+parent}/debugsessions",
                          "httpMethod": "POST",
                          "parameters": {
                            "timeout": {
                              "description": "Optional. The time in seconds after which this DebugSession should end. A timeout specified in DebugSession will overwrite this value.",
                              "type": "string",
                              "location": "query",
                              "format": "int64"
                            },
                            "parent": {
                              "location": "path",
                              "required": true,
                              "pattern": "^organizations/[^/]+/environments/[^/]+/apis/[^/]+/revisions/[^/]+$",
                              "type": "string",
                              "description": "Required. The resource name of the API Proxy revision deployment for which to create the DebugSession. Must be of the form `organizations/{organization}/environments/{environment}/apis/{api}/revisions/{revision}`. If the API proxy resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                            }
                          },
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "id": "apigee.organizations.environments.apis.revisions.debugsessions.create",
                          "parameterOrder": [
                            "parent"
                          ]
                        },
                        "deleteData": {
                          "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/apis/{apisId}/revisions/{revisionsId}/debugsessions/{debugsessionsId}/data",
                          "httpMethod": "DELETE",
                          "parameters": {
                            "name": {
                              "type": "string",
                              "required": true,
                              "location": "path",
                              "pattern": "^organizations/[^/]+/environments/[^/]+/apis/[^/]+/revisions/[^/]+/debugsessions/[^/]+$",
                              "description": "Required. The name of the debug session to delete. Must be of the form: `organizations/{organization}/environments/{environment}/apis/{api}/revisions/{revision}/debugsessions/{debugsession}`. If the API proxy resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                            }
                          },
                          "response": {
                            "$ref": "GoogleProtobufEmpty"
                          },
                          "description": "Deletes the data from a debug session. This does not cancel the debug session or prevent further data from being collected if the session is still active in runtime pods.",
                          "id": "apigee.organizations.environments.apis.revisions.debugsessions.deleteData",
                          "path": "v1/{+name}/data",
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "parameterOrder": [
                            "name"
                          ]
                        }
                      }
                    },
                    "deployments": {
                      "methods": {
                        "generateDeployChangeReport": {
                          "description": "Generates a report for a dry run analysis of a DeployApiProxy request without committing the deployment. In addition to the standard validations performed when adding deployments, additional analysis will be done to detect possible traffic routing changes that would result from this deployment being created. Any potential routing conflicts or unsafe changes will be reported in the response. This routing analysis is not performed for a non-dry-run DeployApiProxy request. For a request path `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}/deployments:generateDeployChangeReport`, two permissions are required: * `apigee.deployments.create` on the resource `organizations/{org}/environments/{env}` * `apigee.proxyrevisions.deploy` on the resource `organizations/{org}/apis/{api}/revisions/{rev}`",
                          "parameterOrder": [
                            "name"
                          ],
                          "path": "v1/{+name}/deployments:generateDeployChangeReport",
                          "httpMethod": "POST",
                          "parameters": {
                            "override": {
                              "location": "query",
                              "description": "Flag that specifies whether to force the deployment of the new revision over the currently deployed revision by overriding conflict checks.",
                              "type": "boolean"
                            },
                            "name": {
                              "pattern": "^organizations/[^/]+/environments/[^/]+/apis/[^/]+/revisions/[^/]+$",
                              "location": "path",
                              "required": true,
                              "description": "Name of the API proxy revision deployment in the following format: `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}` If the API proxy resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                              "type": "string"
                            }
                          },
                          "response": {
                            "$ref": "GoogleCloudApigeeV1DeploymentChangeReport"
                          },
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/apis/{apisId}/revisions/{revisionsId}/deployments:generateDeployChangeReport",
                          "id": "apigee.organizations.environments.apis.revisions.deployments.generateDeployChangeReport"
                        },
                        "generateUndeployChangeReport": {
                          "response": {
                            "$ref": "GoogleCloudApigeeV1DeploymentChangeReport"
                          },
                          "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/apis/{apisId}/revisions/{revisionsId}/deployments:generateUndeployChangeReport",
                          "path": "v1/{+name}/deployments:generateUndeployChangeReport",
                          "httpMethod": "POST",
                          "parameters": {
                            "name": {
                              "pattern": "^organizations/[^/]+/environments/[^/]+/apis/[^/]+/revisions/[^/]+$",
                              "location": "path",
                              "required": true,
                              "description": "Name of the API proxy revision deployment in the following format: `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}`",
                              "type": "string"
                            }
                          },
                          "description": "Generates a report for a dry run analysis of an UndeployApiProxy request without committing the undeploy. In addition to the standard validations performed when removing deployments, additional analysis will be done to detect possible traffic routing changes that would result from this deployment being removed. Any potential routing conflicts or unsafe changes will be reported in the response. This routing analysis is not performed for a non-dry-run UndeployApiProxy request. For a request path `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}/deployments:generateUndeployChangeReport`, two permissions are required: * `apigee.deployments.delete` on the resource `organizations/{org}/environments/{env}` * `apigee.proxyrevisions.undeploy` on the resource `organizations/{org}/apis/{api}/revisions/{rev}`",
                          "id": "apigee.organizations.environments.apis.revisions.deployments.generateUndeployChangeReport",
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "parameterOrder": [
                            "name"
                          ]
                        }
                      }
                    }
                  },
                  "methods": {
                    "getDeployments": {
                      "id": "apigee.organizations.environments.apis.revisions.getDeployments",
                      "description": "Gets the deployment of an API proxy revision and actual state reported by runtime pods.",
                      "path": "v1/{+name}/deployments",
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/apis/{apisId}/revisions/{revisionsId}/deployments",
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "pattern": "^organizations/[^/]+/environments/[^/]+/apis/[^/]+/revisions/[^/]+$",
                          "description": "Required. Name representing an API proxy revision in an environment in the following format: `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}` If the API proxy resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "location": "path",
                          "type": "string",
                          "required": true
                        }
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Deployment"
                      },
                      "parameterOrder": [
                        "name"
                      ]
                    },
                    "undeploy": {
                      "parameterOrder": [
                        "name"
                      ],
                      "path": "v1/{+name}/deployments",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "description": "Undeploys an API proxy revision from an environment. For a request path `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}/deployments`, two permissions are required: * `apigee.deployments.delete` on the resource `organizations/{org}/environments/{env}` * `apigee.proxyrevisions.undeploy` on the resource `organizations/{org}/apis/{api}/revisions/{rev}`",
                      "response": {
                        "$ref": "GoogleProtobufEmpty"
                      },
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/apis/{apisId}/revisions/{revisionsId}/deployments",
                      "id": "apigee.organizations.environments.apis.revisions.undeploy",
                      "httpMethod": "DELETE",
                      "parameters": {
                        "sequencedRollout": {
                          "location": "query",
                          "description": "Flag that specifies whether to enable sequenced rollout. If set to `true`, the environment group routing rules corresponding to this deployment will be removed before removing the deployment from the runtime. This is likely to be a rare use case; it is only needed when the intended effect of undeploying this proxy is to cause the traffic it currently handles to be rerouted to some other existing proxy in the environment group. The GenerateUndeployChangeReport API may be used to examine routing changes before issuing the undeployment request, and its response will indicate if a sequenced rollout is recommended for the undeployment.",
                          "type": "boolean"
                        },
                        "name": {
                          "type": "string",
                          "required": true,
                          "location": "path",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/apis/[^/]+/revisions/[^/]+$",
                          "description": "Required. Name of the API proxy revision deployment in the following format: `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}` If the API proxy resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                        }
                      }
                    },
                    "deploy": {
                      "httpMethod": "POST",
                      "parameters": {
                        "sequencedRollout": {
                          "description": "Flag that specifies whether to enable sequenced rollout. If set to `true`, the routing rules for this deployment and the environment changes to add the deployment will be rolled out in a safe order. This reduces the risk of downtime that could be caused by changing the environment group's routing before the new destination for the affected traffic is ready to receive it. This should only be necessary if the new deployment will be capturing traffic from another environment under a shared environment group or if traffic will be rerouted to a different environment due to a base path removal. The generateDeployChangeReport API may be used to examine routing changes before issuing the deployment request, and its response will indicate if a sequenced rollout is recommended for the deployment.",
                          "location": "query",
                          "type": "boolean"
                        },
                        "override": {
                          "location": "query",
                          "description": "Flag that specifies whether the new deployment replaces other deployed revisions of the API proxy in the environment. Set `override` to `true` to replace other deployed revisions. By default, `override` is `false` and the deployment is rejected if other revisions of the API proxy are deployed in the environment.",
                          "type": "boolean"
                        },
                        "serviceAccount": {
                          "location": "query",
                          "description": "Google Cloud IAM service account. The service account represents the identity of the deployed proxy, and determines what permissions it has. The format must be `{ACCOUNT_ID}@{PROJECT}.iam.gserviceaccount.com`.",
                          "type": "string"
                        },
                        "name": {
                          "required": true,
                          "location": "path",
                          "type": "string",
                          "description": "Required. Name of the API proxy revision deployment in the following format: `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}` If the API proxy resource being deployed has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/apis/[^/]+/revisions/[^/]+$"
                        }
                      },
                      "description": "Deploys a revision of an API proxy. If another revision of the same API proxy revision is currently deployed, set the `override` parameter to `true` to have this revision replace the currently deployed revision. You cannot invoke an API proxy until it has been deployed to an environment. After you deploy an API proxy revision, you cannot edit it. To edit the API proxy, you must create and deploy a new revision. For a request path `organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}/deployments`, two permissions are required: * `apigee.deployments.create` on the resource `organizations/{org}/environments/{env}` * `apigee.proxyrevisions.deploy` on the resource `organizations/{org}/apis/{api}/revisions/{rev}` All successful API proxy deployments to Apigee are [zero-downtime deployments](https://cloud.google.com/apigee/docs/api-platform/deploy/ui-deploy-overview#zero-downtime-deployment). Apigee hybrid validates the dependencies between shared flows and API proxies at deployment time. For example, if the Flow Callout policy in an API proxy references a shared flow that either doesn't exist or isn't deployed, the API proxy deployment fails.",
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/apis/{apisId}/revisions/{revisionsId}/deployments",
                      "id": "apigee.organizations.environments.apis.revisions.deploy",
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "path": "v1/{+name}/deployments",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Deployment"
                      }
                    }
                  }
                },
                "deployments": {
                  "methods": {
                    "list": {
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/apis/{apisId}/deployments",
                      "id": "apigee.organizations.environments.apis.deployments.list",
                      "httpMethod": "GET",
                      "parameters": {
                        "parent": {
                          "pattern": "^organizations/[^/]+/environments/[^/]+/apis/[^/]+$",
                          "type": "string",
                          "location": "path",
                          "required": true,
                          "description": "Required. Name representing an API proxy in an environment in the following format: `organizations/{org}/environments/{env}/apis/{api}` If the API proxy resource has the `space` attribute set, IAM permissions are checked differently . To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                        }
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1ListDeploymentsResponse"
                      },
                      "description": "Lists all deployments of an API proxy in an environment.",
                      "path": "v1/{+parent}/deployments"
                    }
                  }
                }
              }
            },
            "keyvaluemaps": {
              "methods": {
                "create": {
                  "id": "apigee.organizations.environments.keyvaluemaps.create",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "required": true,
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "location": "path",
                      "description": "Required. Name of the environment in which to create the key value map. Use the following structure in your request: `organizations/{org}/environments/{env}`",
                      "type": "string"
                    }
                  },
                  "request": {
                    "$ref": "GoogleCloudApigeeV1KeyValueMap"
                  },
                  "description": "Creates a key value map in an environment.",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keyvaluemaps",
                  "path": "v1/{+parent}/keyvaluemaps",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1KeyValueMap"
                  },
                  "parameterOrder": [
                    "parent"
                  ]
                },
                "get": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1KeyValueMap"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/keyvaluemaps/[^/]+$",
                      "required": true,
                      "location": "path",
                      "description": "Required. Scope as indicated by the URI in which to fetch the key value map. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                    }
                  },
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keyvaluemaps/{keyvaluemapsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Get the key value map scoped to an organization, environment, or API proxy.",
                  "path": "v1/{+name}",
                  "id": "apigee.organizations.environments.keyvaluemaps.get"
                },
                "update": {
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keyvaluemaps/{keyvaluemapsId}",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1KeyValueMap"
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1KeyValueMap"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.environments.keyvaluemaps.update",
                  "httpMethod": "PUT",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+/keyvaluemaps/[^/]+$",
                      "location": "path",
                      "description": "Required. Scope as indicated by the URI in which to fetch the key value map. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Update the key value map scoped to an organization, environment, or API proxy.",
                  "path": "v1/{+name}"
                },
                "delete": {
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1KeyValueMap"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keyvaluemaps/{keyvaluemapsId}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/keyvaluemaps/[^/]+$",
                      "description": "Required. Name of the key value map. Use the following structure in your request: `organizations/{org}/environments/{env}/keyvaluemaps/{keyvaluemap}`",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "description": "Deletes a key value map from an environment.",
                  "id": "apigee.organizations.environments.keyvaluemaps.delete"
                }
              },
              "resources": {
                "entries": {
                  "methods": {
                    "list": {
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keyvaluemaps/{keyvaluemapsId}/entries",
                      "id": "apigee.organizations.environments.keyvaluemaps.entries.list",
                      "description": "Lists key value entries for key values maps scoped to an organization, environment, or API proxy. **Note**: Supported for Apigee hybrid 1.8.x and higher.",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1ListKeyValueEntriesResponse"
                      },
                      "httpMethod": "GET",
                      "parameters": {
                        "pageSize": {
                          "type": "integer",
                          "description": "Optional. Maximum number of key value entries to return. If unspecified, at most 100 entries will be returned.",
                          "format": "int32",
                          "location": "query"
                        },
                        "parent": {
                          "type": "string",
                          "description": "Required. Scope as indicated by the URI in which to list key value maps. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "required": true,
                          "location": "path",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/keyvaluemaps/[^/]+$"
                        },
                        "pageToken": {
                          "type": "string",
                          "location": "query",
                          "description": "Optional. Page token. If provides, must be a valid key value entry returned from a previous call that can be used to retrieve the next page."
                        }
                      },
                      "path": "v1/{+parent}/entries",
                      "parameterOrder": [
                        "parent"
                      ]
                    },
                    "create": {
                      "httpMethod": "POST",
                      "parameters": {
                        "parent": {
                          "description": "Required. Scope as indicated by the URI in which to create the key value map entry. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "type": "string",
                          "required": true,
                          "location": "path",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/keyvaluemaps/[^/]+$"
                        }
                      },
                      "path": "v1/{+parent}/entries",
                      "parameterOrder": [
                        "parent"
                      ],
                      "request": {
                        "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keyvaluemaps/{keyvaluemapsId}/entries",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                      },
                      "id": "apigee.organizations.environments.keyvaluemaps.entries.create",
                      "description": "Creates key value entries in a key value map scoped to an organization, environment, or API proxy. **Note**: Supported for Apigee hybrid 1.8.x and higher."
                    },
                    "get": {
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "id": "apigee.organizations.environments.keyvaluemaps.entries.get",
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "description": "Required. Scope as indicated by the URI in which to fetch the key value map entry/value. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}/entries/{entry}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}/entries/{entry}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}/entries/{entry}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "type": "string",
                          "pattern": "^organizations/[^/]+/environments/[^/]+/keyvaluemaps/[^/]+/entries/[^/]+$",
                          "location": "path",
                          "required": true
                        }
                      },
                      "description": "Get the key value entry value for a key value map scoped to an organization, environment, or API proxy. **Note**: Supported for Apigee hybrid 1.8.x and higher.",
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keyvaluemaps/{keyvaluemapsId}/entries/{entriesId}",
                      "path": "v1/{+name}",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                      }
                    },
                    "delete": {
                      "id": "apigee.organizations.environments.keyvaluemaps.entries.delete",
                      "description": "Deletes a key value entry from a key value map scoped to an organization, environment, or API proxy. **Notes:** * After you delete the key value entry, the policy consuming the entry will continue to function with its cached values for a few minutes. This is expected behavior. * Supported for Apigee hybrid 1.8.x and higher.",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameterOrder": [
                        "name"
                      ],
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keyvaluemaps/{keyvaluemapsId}/entries/{entriesId}",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                      },
                      "path": "v1/{+name}",
                      "httpMethod": "DELETE",
                      "parameters": {
                        "name": {
                          "pattern": "^organizations/[^/]+/environments/[^/]+/keyvaluemaps/[^/]+/entries/[^/]+$",
                          "description": "Required. Scope as indicated by the URI in which to delete the key value map entry. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}/entries/{entry}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}/entries/{entry}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}/entries/{entry}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
                          "type": "string",
                          "required": true,
                          "location": "path"
                        }
                      }
                    },
                    "update": {
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                      },
                      "id": "apigee.organizations.environments.keyvaluemaps.entries.update",
                      "path": "v1/{+name}",
                      "request": {
                        "$ref": "GoogleCloudApigeeV1KeyValueEntry"
                      },
                      "description": "Update key value entry scoped to an organization, environment, or API proxy for an existing key.",
                      "httpMethod": "PUT",
                      "parameters": {
                        "name": {
                          "location": "path",
                          "required": true,
                          "pattern": "^organizations/[^/]+/environments/[^/]+/keyvaluemaps/[^/]+/entries/[^/]+$",
                          "type": "string",
                          "description": "Required. Scope as indicated by the URI in which to create the key value map entry. Use **one** of the following structures in your request: * `organizations/{organization}/apis/{api}/keyvaluemaps/{keyvaluemap}`. * `organizations/{organization}/environments/{environment}/keyvaluemaps/{keyvaluemap}` * `organizations/{organization}/keyvaluemaps/{keyvaluemap}`. If the KeyValueMap is under an API Proxy resource that has the `space` attribute set, IAM permissions are checked against the Space resource path. To learn more, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
                        }
                      },
                      "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/keyvaluemaps/{keyvaluemapsId}/entries/{entriesId}"
                    }
                  }
                }
              }
            },
            "deployments": {
              "methods": {
                "setIamPolicy": {
                  "response": {
                    "$ref": "GoogleIamV1Policy"
                  },
                  "id": "apigee.organizations.environments.deployments.setIamPolicy",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/deployments/{deploymentsId}:setIamPolicy",
                  "parameterOrder": [
                    "resource"
                  ],
                  "path": "v1/{+resource}:setIamPolicy",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleIamV1SetIamPolicyRequest"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "resource": {
                      "description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
                      "type": "string",
                      "required": true,
                      "pattern": "^organizations/[^/]+/environments/[^/]+/deployments/[^/]+$",
                      "location": "path"
                    }
                  },
                  "description": "Sets the IAM policy on a deployment, if the policy already exists it will be replaced. For more information, see [Manage users, roles, and permissions using the API](https://cloud.google.com/apigee/docs/api-platform/system-administration/manage-users-roles). You must have the `apigee.deployments.setIamPolicy` permission to call this API."
                },
                "getIamPolicy": {
                  "response": {
                    "$ref": "GoogleIamV1Policy"
                  },
                  "path": "v1/{+resource}:getIamPolicy",
                  "description": "Gets the IAM policy on a deployment. For more information, see [Manage users, roles, and permissions using the API](https://cloud.google.com/apigee/docs/api-platform/system-administration/manage-users-roles). You must have the `apigee.deployments.getIamPolicy` permission to call this API.",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/deployments/{deploymentsId}:getIamPolicy",
                  "httpMethod": "GET",
                  "parameters": {
                    "options.requestedPolicyVersion": {
                      "type": "integer",
                      "format": "int32",
                      "location": "query",
                      "description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
                    },
                    "resource": {
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/deployments/[^/]+$",
                      "description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field."
                    }
                  },
                  "parameterOrder": [
                    "resource"
                  ],
                  "id": "apigee.organizations.environments.deployments.getIamPolicy",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "testIamPermissions": {
                  "httpMethod": "POST",
                  "parameters": {
                    "resource": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+/deployments/[^/]+$",
                      "description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "resource"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Tests the permissions of a user on a deployment, and returns a subset of permissions that the user has on the deployment. If the deployment does not exist, an empty permission set is returned (a NOT_FOUND error is not returned).",
                  "id": "apigee.organizations.environments.deployments.testIamPermissions",
                  "request": {
                    "$ref": "GoogleIamV1TestIamPermissionsRequest"
                  },
                  "path": "v1/{+resource}:testIamPermissions",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/deployments/{deploymentsId}:testIamPermissions",
                  "response": {
                    "$ref": "GoogleIamV1TestIamPermissionsResponse"
                  }
                },
                "list": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "location": "path",
                      "type": "string",
                      "description": "Required. Name of the environment for which to return deployment information in the following format: `organizations/{org}/environments/{env}`",
                      "required": true
                    },
                    "sharedFlows": {
                      "description": "Optional. Flag that specifies whether to return shared flow or API proxy deployments. Set to `true` to return shared flow deployments; set to `false` to return API proxy deployments. Defaults to `false`.",
                      "type": "boolean",
                      "location": "query"
                    }
                  },
                  "description": "Lists all deployments of API proxies or shared flows in an environment.",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/deployments",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListDeploymentsResponse"
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "path": "v1/{+parent}/deployments",
                  "id": "apigee.organizations.environments.deployments.list"
                },
                "get": {
                  "parameterOrder": [
                    "name"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+/deployments/[^/]+$",
                      "type": "string",
                      "description": "Required. Name of the api proxy or the shared flow deployment. Use the following structure in your request: `organizations/{org}/environments/{env}/deployments/{deployment}`",
                      "location": "path",
                      "required": true
                    }
                  },
                  "description": "Gets a particular deployment of Api proxy or a shared flow in an environment",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Deployment"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/deployments/{deploymentsId}",
                  "id": "apigee.organizations.environments.deployments.get",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}"
                }
              }
            },
            "securityIncidents": {
              "methods": {
                "list": {
                  "path": "v1/{+parent}/securityIncidents",
                  "httpMethod": "GET",
                  "parameters": {
                    "pageToken": {
                      "description": "Optional. A page token, received from a previous `ListSecurityIncident` call. Provide this to retrieve the subsequent page.",
                      "type": "string",
                      "location": "query"
                    },
                    "filter": {
                      "location": "query",
                      "type": "string",
                      "description": "The filter expression to be used to get the list of security incidents, where filtering can be done on API Proxies. Example: filter = \"api_proxy = /\", \"first_detected_time \u003e\", \"last_detected_time \u003c\""
                    },
                    "parent": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "location": "path",
                      "required": true,
                      "description": "Required. For a specific organization, list of all the security incidents. Format: `organizations/{org}/environments/{environment}`"
                    },
                    "pageSize": {
                      "type": "integer",
                      "description": "Optional. The maximum number of incidents to return. The service may return fewer than this value. If unspecified, at most 50 incidents will be returned.",
                      "format": "int32",
                      "location": "query"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityIncidents",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListSecurityIncidentsResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "ListSecurityIncidents lists all the security incident associated with the environment.",
                  "id": "apigee.organizations.environments.securityIncidents.list"
                },
                "patch": {
                  "parameterOrder": [
                    "name"
                  ],
                  "httpMethod": "PATCH",
                  "parameters": {
                    "name": {
                      "required": true,
                      "pattern": "^organizations/[^/]+/environments/[^/]+/securityIncidents/[^/]+$",
                      "location": "path",
                      "type": "string",
                      "description": "Immutable. Name of the security incident resource. Format: organizations/{org}/environments/{environment}/securityIncidents/{incident} Example: organizations/apigee-org/environments/dev/securityIncidents/1234-5678-9101-1111"
                    },
                    "updateMask": {
                      "format": "google-fieldmask",
                      "description": "Required. The list of fields to update. Allowed fields are: LINT.IfChange(allowed_update_fields_comment) - observability LINT.ThenChange()",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1SecurityIncident"
                  },
                  "description": "UpdateSecurityIncidents updates an existing security incident.",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1SecurityIncident"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityIncidents/{securityIncidentsId}",
                  "id": "apigee.organizations.environments.securityIncidents.patch"
                },
                "batchUpdate": {
                  "request": {
                    "$ref": "GoogleCloudApigeeV1BatchUpdateSecurityIncidentsRequest"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "type": "string",
                      "description": "Optional. The parent resource shared by all security incidents being updated. If this is set, the parent field in the UpdateSecurityIncidentRequest messages must either be empty or match this field.",
                      "location": "path",
                      "required": true
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "parent"
                  ],
                  "id": "apigee.organizations.environments.securityIncidents.batchUpdate",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityIncidents:batchUpdate",
                  "path": "v1/{+parent}/securityIncidents:batchUpdate",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1BatchUpdateSecurityIncidentsResponse"
                  },
                  "description": "BatchUpdateSecurityIncident updates multiple existing security incidents."
                },
                "get": {
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityIncidents/{securityIncidentsId}",
                  "path": "v1/{+name}",
                  "description": "GetSecurityIncident gets the specified security incident. Returns NOT_FOUND if security incident is not present for the specified organization and environment.",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/securityIncidents/[^/]+$",
                      "description": "Required. Security incident in the following format: `organizations/{org}/environments/{environment}/securityIncidents/{incident}'. Example: organizations/testOrg/environments/testEnv/securityIncidents/1234-4567-890-111"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.environments.securityIncidents.get",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1SecurityIncident"
                  }
                }
              }
            },
            "addonsConfig": {
              "methods": {
                "setAddonEnablement": {
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "apigee.organizations.environments.addonsConfig.setAddonEnablement",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "required": true,
                      "pattern": "^organizations/[^/]+/environments/[^/]+/addonsConfig$",
                      "location": "path",
                      "type": "string",
                      "description": "Required. Name of the add-ons config. Must be in the format of `/organizations/{org}/environments/{env}/addonsConfig`"
                    }
                  },
                  "path": "v1/{+name}:setAddonEnablement",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1SetAddonEnablementRequest"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleLongrunningOperation"
                  },
                  "description": "Updates an add-on enablement status of an environment.",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/addonsConfig:setAddonEnablement"
                }
              }
            },
            "securityActions": {
              "methods": {
                "create": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityActions",
                  "parameterOrder": [
                    "parent"
                  ],
                  "id": "apigee.organizations.environments.securityActions.create",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1SecurityAction"
                  },
                  "description": "CreateSecurityAction creates a SecurityAction.",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1SecurityAction"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "securityActionId": {
                      "type": "string",
                      "location": "query",
                      "description": "Required. The ID to use for the SecurityAction, which will become the final component of the action's resource name. This value should be 0-61 characters, and valid format is (^[a-z]([a-z0-9-]{\u200b0,61}[a-z0-9])?$)."
                    },
                    "parent": {
                      "required": true,
                      "location": "path",
                      "description": "Required. The organization and environment that this SecurityAction applies to. Format: organizations/{org}/environments/{env}",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$"
                    }
                  },
                  "path": "v1/{+parent}/securityActions"
                },
                "enable": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.environments.securityActions.enable",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1EnableSecurityActionRequest"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/securityActions/[^/]+$",
                      "description": "Required. The name of the SecurityAction to enable. Format: organizations/{org}/environments/{env}/securityActions/{security_action}",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "description": "Enable a SecurityAction. The `state` of the SecurityAction after enabling is `ENABLED`. `EnableSecurityAction` can be called on SecurityActions in the state `DISABLED`; SecurityActions in a different state (including `ENABLED) return an error.",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityActions/{securityActionsId}:enable",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1SecurityAction"
                  },
                  "path": "v1/{+name}:enable"
                },
                "disable": {
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "required": true,
                      "location": "path",
                      "description": "Required. The name of the SecurityAction to disable. Format: organizations/{org}/environments/{env}/securityActions/{security_action}",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/securityActions/[^/]+$"
                    }
                  },
                  "request": {
                    "$ref": "GoogleCloudApigeeV1DisableSecurityActionRequest"
                  },
                  "id": "apigee.organizations.environments.securityActions.disable",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityActions/{securityActionsId}:disable",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1SecurityAction"
                  },
                  "path": "v1/{+name}:disable",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Disable a SecurityAction. The `state` of the SecurityAction after disabling is `DISABLED`. `DisableSecurityAction` can be called on SecurityActions in the state `ENABLED`; SecurityActions in a different state (including `DISABLED`) return an error.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "delete": {
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Required. The name of the security action to delete. Format: `organizations/{org}/environment/{env}/securityActions/{security_action}`",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/securityActions/[^/]+$",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "path": "v1/{+name}",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityActions/{securityActionsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleProtobufEmpty"
                  },
                  "id": "apigee.organizations.environments.securityActions.delete",
                  "description": "Delete a SecurityAction."
                },
                "patch": {
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.environments.securityActions.patch",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityActions/{securityActionsId}",
                  "httpMethod": "PATCH",
                  "parameters": {
                    "name": {
                      "required": true,
                      "type": "string",
                      "location": "path",
                      "description": "Immutable. This field is ignored during creation as per AIP-133. Please set the `security_action_id` field in the CreateSecurityActionRequest when creating a new SecurityAction. Format: organizations/{org}/environments/{env}/securityActions/{security_action}",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/securityActions/[^/]+$"
                    },
                    "updateMask": {
                      "format": "google-fieldmask",
                      "type": "string",
                      "description": "Optional. The list of fields to update. Valid fields to update are `description`, `state`, `allow`, `deny`, and `flag`, `expire_time`, and `ttl`, `api_proxies`, and `condition_config`.",
                      "location": "query"
                    }
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1SecurityAction"
                  },
                  "description": "Update a SecurityAction.",
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1SecurityAction"
                  }
                },
                "list": {
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityActions",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Returns a list of SecurityActions. This returns both enabled and disabled actions.",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListSecurityActionsResponse"
                  },
                  "httpMethod": "GET",
                  "parameters": {
                    "pageToken": {
                      "type": "string",
                      "location": "query",
                      "description": "A page token, received from a previous `ListSecurityActions` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSecurityActions` must match the call that provided the page token."
                    },
                    "parent": {
                      "description": "Required. The parent, which owns this collection of SecurityActions. Format: organizations/{org}/environments/{env}",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "required": true,
                      "location": "path",
                      "type": "string"
                    },
                    "filter": {
                      "description": "The filter expression to filter List results. https://google.aip.dev/160. Allows for filtering over: state and api_proxies. E.g.: state = ACTIVE AND apiProxies:foo. Filtering by action is not supported https://github.com/aip-dev/google.aip.dev/issues/624",
                      "type": "string",
                      "location": "query"
                    },
                    "pageSize": {
                      "format": "int32",
                      "type": "integer",
                      "description": "The maximum number of SecurityActions to return. If unspecified, at most 50 SecurityActions will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                      "location": "query"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.environments.securityActions.list",
                  "path": "v1/{+parent}/securityActions"
                },
                "get": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1SecurityAction"
                  },
                  "description": "Get a SecurityAction by name.",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/securityActions/{securityActionsId}",
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "apigee.organizations.environments.securityActions.get",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "Required. The fully qualified name of the SecurityAction to retrieve. Format: organizations/{org}/environments/{env}/securityActions/{security_action}",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/securityActions/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  }
                }
              }
            },
            "targetservers": {
              "methods": {
                "get": {
                  "description": "Gets a TargetServer resource.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/targetservers/{targetserversId}",
                  "id": "apigee.organizations.environments.targetservers.get",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1TargetServer"
                  },
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the TargetServer to get. Must be of the form `organizations/{org}/environments/{env}/targetservers/{target_server_id}`.",
                      "location": "path",
                      "required": true,
                      "pattern": "^organizations/[^/]+/environments/[^/]+/targetservers/[^/]+$",
                      "type": "string"
                    }
                  }
                },
                "delete": {
                  "description": "Deletes a TargetServer from an environment. Returns the deleted TargetServer resource.",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+/targetservers/[^/]+$",
                      "description": "Required. The name of the TargetServer to delete. Must be of the form `organizations/{org}/environments/{env}/targetservers/{target_server_id}`."
                    }
                  },
                  "id": "apigee.organizations.environments.targetservers.delete",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/targetservers/{targetserversId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1TargetServer"
                  }
                },
                "update": {
                  "id": "apigee.organizations.environments.targetservers.update",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "httpMethod": "PUT",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+/targetservers/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "description": "Required. The name of the TargetServer to replace. Must be of the form `organizations/{org}/environments/{env}/targetservers/{target_server_id}`."
                    }
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1TargetServer"
                  },
                  "description": "Updates an existing TargetServer. Note that this operation has PUT semantics; it will replace the entirety of the existing TargetServer with the resource in the request body.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/targetservers/{targetserversId}",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1TargetServer"
                  }
                },
                "create": {
                  "id": "apigee.organizations.environments.targetservers.create",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1TargetServer"
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1TargetServer"
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Creates a TargetServer in the specified environment.",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/targetservers",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. The parent environment name under which the TargetServer will be created. Must be of the form `organizations/{org}/environments/{env}`.",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$",
                      "type": "string",
                      "location": "path",
                      "required": true
                    },
                    "name": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. The ID to give the TargetServer. This will overwrite the value in TargetServer."
                    }
                  },
                  "path": "v1/{+parent}/targetservers"
                }
              }
            },
            "references": {
              "methods": {
                "create": {
                  "id": "apigee.organizations.environments.references.create",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Reference"
                  },
                  "description": "Creates a Reference in the specified environment.",
                  "path": "v1/{+parent}/references",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "parent"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/references",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1Reference"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. The parent environment name under which the Reference will be created. Must be of the form `organizations/{org}/environments/{env}`.",
                      "required": true,
                      "location": "path",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/environments/[^/]+$"
                    }
                  }
                },
                "delete": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Reference"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/references/{referencesId}",
                  "description": "Deletes a Reference from an environment. Returns the deleted Reference resource.",
                  "id": "apigee.organizations.environments.references.delete",
                  "parameterOrder": [
                    "name"
                  ],
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+/references/[^/]+$",
                      "description": "Required. The name of the Reference to delete. Must be of the form `organizations/{org}/environments/{env}/references/{ref}`.",
                      "type": "string",
                      "location": "path",
                      "required": true
                    }
                  },
                  "path": "v1/{+name}"
                },
                "update": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1Reference"
                  },
                  "id": "apigee.organizations.environments.references.update",
                  "path": "v1/{+name}",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/references/{referencesId}",
                  "httpMethod": "PUT",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+/references/[^/]+$",
                      "required": true,
                      "location": "path",
                      "description": "Required. The name of the Reference to update. Must be of the form `organizations/{org}/environments/{env}/references/{ref}`.",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Updates an existing Reference. Note that this operation has PUT semantics; it will replace the entirety of the existing Reference with the resource in the request body.",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Reference"
                  }
                },
                "get": {
                  "id": "apigee.organizations.environments.references.get",
                  "description": "Gets a Reference resource.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "flatPath": "v1/organizations/{organizationsId}/environments/{environmentsId}/references/{referencesId}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/environments/[^/]+/references/[^/]+$",
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "description": "Required. The name of the Reference to get. Must be of the form `organizations/{org}/environments/{env}/references/{ref}`."
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Reference"
                  }
                }
              }
            }
          }
        },
        "envgroups": {
          "methods": {
            "patch": {
              "request": {
                "$ref": "GoogleCloudApigeeV1EnvironmentGroup"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1/organizations/{organizationsId}/envgroups/{envgroupsId}",
              "description": "Updates an environment group.",
              "httpMethod": "PATCH",
              "parameters": {
                "updateMask": {
                  "format": "google-fieldmask",
                  "description": "Optional. List of fields to be updated.",
                  "location": "query",
                  "type": "string"
                },
                "name": {
                  "type": "string",
                  "description": "Required. Name of the environment group to update in the format: `organizations/{org}/envgroups/{envgroup}.",
                  "location": "path",
                  "required": true,
                  "pattern": "^organizations/[^/]+/envgroups/[^/]+$"
                }
              },
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "id": "apigee.organizations.envgroups.patch"
            },
            "create": {
              "path": "v1/{+parent}/envgroups",
              "flatPath": "v1/organizations/{organizationsId}/envgroups",
              "description": "Creates a new environment group.",
              "request": {
                "$ref": "GoogleCloudApigeeV1EnvironmentGroup"
              },
              "id": "apigee.organizations.envgroups.create",
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "type": "string",
                  "required": true,
                  "description": "Required. Name of the organization in which to create the environment group in the following format: `organizations/{org}`.",
                  "location": "path",
                  "pattern": "^organizations/[^/]+$"
                },
                "name": {
                  "description": "Optional. ID of the environment group. Overrides any ID in the environment_group resource.",
                  "location": "query",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "getDeployedIngressConfig": {
              "id": "apigee.organizations.envgroups.getDeployedIngressConfig",
              "flatPath": "v1/organizations/{organizationsId}/envgroups/{envgroupsId}/deployedIngressConfig",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "type": "string",
                  "description": "Required. Name of the deployed configuration for the environment group in the following format: 'organizations/{org}/envgroups/{envgroup}/deployedIngressConfig'.",
                  "pattern": "^organizations/[^/]+/envgroups/[^/]+/deployedIngressConfig$",
                  "location": "path",
                  "required": true
                },
                "view": {
                  "type": "string",
                  "description": "When set to FULL, additional details about the specific deployments receiving traffic will be included in the IngressConfig response's RoutingRules.",
                  "enum": [
                    "INGRESS_CONFIG_VIEW_UNSPECIFIED",
                    "BASIC",
                    "FULL"
                  ],
                  "enumDescriptions": [
                    "The default/unset value. The API will default to the BASIC view.",
                    "Include all ingress config data necessary for the runtime to configure ingress, but no more. Routing rules will include only basepath and destination environment. This the default value.",
                    "Include all ingress config data, including internal debug info for each routing rule such as the proxy claiming a particular basepath and when the routing rule first appeared in the env group."
                  ],
                  "location": "query"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1EnvironmentGroupConfig"
              },
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Gets the deployed ingress configuration for an environment group."
            },
            "delete": {
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "description": "Required. Name of the environment group in the following format: `organizations/{org}/envgroups/{envgroup}`.",
                  "type": "string",
                  "pattern": "^organizations/[^/]+/envgroups/[^/]+$",
                  "location": "path",
                  "required": true
                }
              },
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1/organizations/{organizationsId}/envgroups/{envgroupsId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "id": "apigee.organizations.envgroups.delete",
              "description": "Deletes an environment group."
            },
            "get": {
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Gets an environment group.",
              "id": "apigee.organizations.envgroups.get",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. Name of the environment group in the following format: `organizations/{org}/envgroups/{envgroup}`.",
                  "required": true,
                  "pattern": "^organizations/[^/]+/envgroups/[^/]+$",
                  "location": "path",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1EnvironmentGroup"
              },
              "flatPath": "v1/organizations/{organizationsId}/envgroups/{envgroupsId}",
              "parameterOrder": [
                "name"
              ]
            },
            "list": {
              "response": {
                "$ref": "GoogleCloudApigeeV1ListEnvironmentGroupsResponse"
              },
              "parameterOrder": [
                "parent"
              ],
              "flatPath": "v1/organizations/{organizationsId}/envgroups",
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "description": "Required. Name of the organization for which to list environment groups in the following format: `organizations/{org}`.",
                  "required": true,
                  "pattern": "^organizations/[^/]+$",
                  "location": "path",
                  "type": "string"
                },
                "pageSize": {
                  "format": "int32",
                  "description": "Maximum number of environment groups to return. The page size defaults to 25.",
                  "type": "integer",
                  "location": "query"
                },
                "pageToken": {
                  "description": "Page token, returned from a previous ListEnvironmentGroups call, that you can use to retrieve the next page.",
                  "location": "query",
                  "type": "string"
                }
              },
              "description": "Lists all environment groups.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "apigee.organizations.envgroups.list",
              "path": "v1/{+parent}/envgroups"
            }
          },
          "resources": {
            "attachments": {
              "methods": {
                "list": {
                  "flatPath": "v1/organizations/{organizationsId}/envgroups/{envgroupsId}/attachments",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+parent}/attachments",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListEnvironmentGroupAttachmentsResponse"
                  },
                  "id": "apigee.organizations.envgroups.attachments.list",
                  "description": "Lists all attachments of an environment group.",
                  "parameterOrder": [
                    "parent"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "format": "int32",
                      "description": "Maximum number of environment group attachments to return. The page size defaults to 25."
                    },
                    "parent": {
                      "description": "Required. Name of the environment group in the following format: `organizations/{org}/envgroups/{envgroup}`.",
                      "required": true,
                      "pattern": "^organizations/[^/]+/envgroups/[^/]+$",
                      "type": "string",
                      "location": "path"
                    },
                    "pageToken": {
                      "description": "Page token, returned by a previous ListEnvironmentGroupAttachments call, that you can use to retrieve the next page.",
                      "type": "string",
                      "location": "query"
                    }
                  }
                },
                "delete": {
                  "description": "Deletes an environment group attachment.",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/envgroups/[^/]+/attachments/[^/]+$",
                      "type": "string",
                      "description": "Required. Name of the environment group attachment to delete in the following format: `organizations/{org}/envgroups/{envgroup}/attachments/{attachment}`.",
                      "location": "path",
                      "required": true
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "response": {
                    "$ref": "GoogleLongrunningOperation"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/envgroups/{envgroupsId}/attachments/{attachmentsId}",
                  "id": "apigee.organizations.envgroups.attachments.delete"
                },
                "get": {
                  "id": "apigee.organizations.envgroups.attachments.get",
                  "flatPath": "v1/organizations/{organizationsId}/envgroups/{envgroupsId}/attachments/{attachmentsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1EnvironmentGroupAttachment"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "required": true,
                      "description": "Required. Name of the environment group attachment in the following format: `organizations/{org}/envgroups/{envgroup}/attachments/{attachment}`",
                      "pattern": "^organizations/[^/]+/envgroups/[^/]+/attachments/[^/]+$",
                      "type": "string"
                    }
                  },
                  "description": "Gets an environment group attachment.",
                  "path": "v1/{+name}"
                },
                "create": {
                  "response": {
                    "$ref": "GoogleLongrunningOperation"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+parent}/attachments",
                  "flatPath": "v1/organizations/{organizationsId}/envgroups/{envgroupsId}/attachments",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1EnvironmentGroupAttachment"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "pattern": "^organizations/[^/]+/envgroups/[^/]+$",
                      "description": "Required. EnvironmentGroup under which to create the attachment in the following format: `organizations/{org}/envgroups/{envgroup}`."
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Creates a new attachment of an environment to an environment group.",
                  "id": "apigee.organizations.envgroups.attachments.create"
                }
              }
            }
          }
        },
        "securityMonitoringConditions": {
          "methods": {
            "delete": {
              "httpMethod": "DELETE",
              "parameters": {
                "riskAssessmentType": {
                  "description": "Optional. The risk assessment type of the security monitoring condition. Defaults to ADVANCED_API_SECURITY.",
                  "location": "query",
                  "type": "string",
                  "enum": [
                    "RISK_ASSESSMENT_TYPE_UNSPECIFIED",
                    "APIGEE",
                    "API_HUB"
                  ],
                  "enumDescriptions": [
                    "Risk assessment type is not specified.",
                    "Risk assessment type is Apigee.",
                    "Risk assessment type is API Hub."
                  ]
                },
                "name": {
                  "location": "path",
                  "type": "string",
                  "required": true,
                  "pattern": "^organizations/[^/]+/securityMonitoringConditions/[^/]+$",
                  "description": "Required. The name of the security monitoring condition to delete. Format: `organizations/{org}/securityMonitoringConditions/{security_monitoring_condition}`"
                }
              },
              "response": {
                "$ref": "GoogleProtobufEmpty"
              },
              "description": "Delete a security monitoring condition.",
              "id": "apigee.organizations.securityMonitoringConditions.delete",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/securityMonitoringConditions/{securityMonitoringConditionsId}",
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}"
            },
            "create": {
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "description": "Required. The parent resource name. Format: `organizations/{org}`",
                  "location": "path",
                  "pattern": "^organizations/[^/]+$",
                  "required": true,
                  "type": "string"
                },
                "securityMonitoringConditionId": {
                  "type": "string",
                  "location": "query",
                  "description": "Optional. Optional: The security monitoring condition id. If not specified, a monitoring condition uuid will be generated by the backend. This value should be 4-63 characters, and valid characters are /a-z-/."
                }
              },
              "description": "Create a security monitoring condition.",
              "request": {
                "$ref": "GoogleCloudApigeeV1SecurityMonitoringCondition"
              },
              "id": "apigee.organizations.securityMonitoringConditions.create",
              "path": "v1/{+parent}/securityMonitoringConditions",
              "flatPath": "v1/organizations/{organizationsId}/securityMonitoringConditions",
              "parameterOrder": [
                "parent"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityMonitoringCondition"
              }
            },
            "patch": {
              "flatPath": "v1/organizations/{organizationsId}/securityMonitoringConditions/{securityMonitoringConditionsId}",
              "id": "apigee.organizations.securityMonitoringConditions.patch",
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Update a security monitoring condition.",
              "httpMethod": "PATCH",
              "parameters": {
                "updateMask": {
                  "description": "Optional. The list of fields to update. Valid fields to update are `include_all_resources` and `include`.",
                  "format": "google-fieldmask",
                  "location": "query",
                  "type": "string"
                },
                "name": {
                  "pattern": "^organizations/[^/]+/securityMonitoringConditions/[^/]+$",
                  "description": "Identifier. Name of the security monitoring condition resource. Format: organizations/{org}/securityMonitoringConditions/{security_monitoring_condition}",
                  "type": "string",
                  "location": "path",
                  "required": true
                }
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityMonitoringCondition"
              },
              "request": {
                "$ref": "GoogleCloudApigeeV1SecurityMonitoringCondition"
              },
              "parameterOrder": [
                "name"
              ]
            },
            "get": {
              "description": "Get a security monitoring condition.",
              "path": "v1/{+name}",
              "flatPath": "v1/organizations/{organizationsId}/securityMonitoringConditions/{securityMonitoringConditionsId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "id": "apigee.organizations.securityMonitoringConditions.get",
              "httpMethod": "GET",
              "parameters": {
                "riskAssessmentType": {
                  "type": "string",
                  "enum": [
                    "RISK_ASSESSMENT_TYPE_UNSPECIFIED",
                    "APIGEE",
                    "API_HUB"
                  ],
                  "location": "query",
                  "description": "Optional. The risk assessment type of the security monitoring condition. Defaults to ADVANCED_API_SECURITY.",
                  "enumDescriptions": [
                    "Risk assessment type is not specified.",
                    "Risk assessment type is Apigee.",
                    "Risk assessment type is API Hub."
                  ]
                },
                "name": {
                  "pattern": "^organizations/[^/]+/securityMonitoringConditions/[^/]+$",
                  "type": "string",
                  "description": "Required. The name of the security monitoring condition to get. Format: `organizations/{org}/securityMonitoringConditions/{security_monitoring_condition}`",
                  "location": "path",
                  "required": true
                }
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityMonitoringCondition"
              }
            },
            "list": {
              "flatPath": "v1/organizations/{organizationsId}/securityMonitoringConditions",
              "response": {
                "$ref": "GoogleCloudApigeeV1ListSecurityMonitoringConditionsResponse"
              },
              "parameterOrder": [
                "parent"
              ],
              "httpMethod": "GET",
              "parameters": {
                "pageToken": {
                  "type": "string",
                  "location": "query",
                  "description": "Optional. A page token, received from a previous `ListSecurityMonitoringConditions` call. Provide this to retrieve the subsequent page."
                },
                "filter": {
                  "type": "string",
                  "description": "Optional. Filter for the monitoring conditions. When RiskAssessmentType is APIGEE, monitoring conditions can be filtered by profile and scope. For example: `profile=profile1 AND scope=env1` When RiskAssessmentType is API_HUB, monitoring conditions can be filtered by profile and api_hub_gateway. For example: `profile=profile1 AND api_hub_gateway=gateway1`",
                  "location": "query"
                },
                "riskAssessmentType": {
                  "enumDescriptions": [
                    "Risk assessment type is not specified.",
                    "Risk assessment type is Apigee.",
                    "Risk assessment type is API Hub."
                  ],
                  "location": "query",
                  "enum": [
                    "RISK_ASSESSMENT_TYPE_UNSPECIFIED",
                    "APIGEE",
                    "API_HUB"
                  ],
                  "type": "string",
                  "description": "Optional. The risk assessment type of the security monitoring condition. Defaults to ADVANCED_API_SECURITY."
                },
                "pageSize": {
                  "description": "Optional. The maximum number of monitoring conditions to return.",
                  "location": "query",
                  "type": "integer",
                  "format": "int32"
                },
                "parent": {
                  "pattern": "^organizations/[^/]+$",
                  "type": "string",
                  "description": "Required. For a specific organization, list all the security monitoring conditions. Format: `organizations/{org}`",
                  "location": "path",
                  "required": true
                }
              },
              "description": "List security monitoring conditions.",
              "id": "apigee.organizations.securityMonitoringConditions.list",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+parent}/securityMonitoringConditions"
            }
          }
        },
        "securityProfiles": {
          "resources": {
            "environments": {
              "methods": {
                "delete": {
                  "description": "DeleteSecurityProfileEnvironmentAssociation removes profile environment association i.e. detaches environment from security profile.",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the environment attachment to delete. Format: organizations/{org}/securityProfiles/{profile}/environments/{env}",
                      "pattern": "^organizations/[^/]+/securityProfiles/[^/]+/environments/[^/]+$",
                      "type": "string",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "id": "apigee.organizations.securityProfiles.environments.delete",
                  "response": {
                    "$ref": "GoogleProtobufEmpty"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/securityProfiles/{securityProfilesId}/environments/{environmentsId}"
                },
                "computeEnvironmentScores": {
                  "description": "ComputeEnvironmentScores calculates scores for requested time range for the specified security profile and environment.",
                  "flatPath": "v1/organizations/{organizationsId}/securityProfiles/{securityProfilesId}/environments/{environmentsId}:computeEnvironmentScores",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1ComputeEnvironmentScoresRequest"
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ComputeEnvironmentScoresResponse"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "profileEnvironment": {
                      "location": "path",
                      "required": true,
                      "description": "Required. Name of organization and environment and profile id for which score needs to be computed. Format: organizations/{org}/securityProfiles/{profile}/environments/{env}",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/securityProfiles/[^/]+/environments/[^/]+$"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+profileEnvironment}:computeEnvironmentScores",
                  "parameterOrder": [
                    "profileEnvironment"
                  ],
                  "id": "apigee.organizations.securityProfiles.environments.computeEnvironmentScores"
                },
                "create": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1SecurityProfileEnvironmentAssociation"
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "CreateSecurityProfileEnvironmentAssociation creates profile environment association i.e. attaches environment to security profile.",
                  "flatPath": "v1/organizations/{organizationsId}/securityProfiles/{securityProfilesId}/environments",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1SecurityProfileEnvironmentAssociation"
                  },
                  "path": "v1/{+parent}/environments",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "pattern": "^organizations/[^/]+/securityProfiles/[^/]+$",
                      "location": "path",
                      "description": "Required. Name of organization and security profile ID. Format: organizations/{org}/securityProfiles/{profile}",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "id": "apigee.organizations.securityProfiles.environments.create"
                }
              }
            }
          },
          "methods": {
            "listRevisions": {
              "id": "apigee.organizations.securityProfiles.listRevisions",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}:listRevisions",
              "flatPath": "v1/organizations/{organizationsId}/securityProfiles/{securityProfilesId}:listRevisions",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. For a specific profile, list all the revisions. Format: `organizations/{org}/securityProfiles/{profile}`",
                  "type": "string",
                  "pattern": "^organizations/[^/]+/securityProfiles/[^/]+$",
                  "location": "path",
                  "required": true
                },
                "pageToken": {
                  "type": "string",
                  "location": "query",
                  "description": "A page token, received from a previous `ListSecurityProfileRevisions` call. Provide this to retrieve the subsequent page."
                },
                "pageSize": {
                  "format": "int32",
                  "location": "query",
                  "type": "integer",
                  "description": "The maximum number of profile revisions to return. The service may return fewer than this value. If unspecified, at most 50 revisions will be returned."
                }
              },
              "description": "ListSecurityProfileRevisions lists all the revisions of the security profile.",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1ListSecurityProfileRevisionsResponse"
              }
            },
            "patch": {
              "path": "v1/{+name}",
              "flatPath": "v1/organizations/{organizationsId}/securityProfiles/{securityProfilesId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "UpdateSecurityProfile update the metadata of security profile.",
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityProfile"
              },
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "description": "Immutable. Name of the security profile resource. Format: organizations/{org}/securityProfiles/{profile}",
                  "required": true,
                  "location": "path",
                  "pattern": "^organizations/[^/]+/securityProfiles/[^/]+$",
                  "type": "string"
                },
                "updateMask": {
                  "format": "google-fieldmask",
                  "description": "Required. The list of fields to update.",
                  "location": "query",
                  "type": "string"
                }
              },
              "id": "apigee.organizations.securityProfiles.patch",
              "request": {
                "$ref": "GoogleCloudApigeeV1SecurityProfile"
              }
            },
            "get": {
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityProfile"
              },
              "parameterOrder": [
                "name"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "description": "GetSecurityProfile gets the specified security profile. Returns NOT_FOUND if security profile is not present for the specified organization.",
              "flatPath": "v1/organizations/{organizationsId}/securityProfiles/{securityProfilesId}",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. Security profile in the following format: `organizations/{org}/securityProfiles/{profile}'. Profile may optionally contain revision ID. If revision ID is not provided, the response will contain latest revision by default. Example: organizations/testOrg/securityProfiles/testProfile@5",
                  "pattern": "^organizations/[^/]+/securityProfiles/[^/]+$",
                  "required": true,
                  "location": "path",
                  "type": "string"
                }
              },
              "id": "apigee.organizations.securityProfiles.get"
            },
            "create": {
              "description": "CreateSecurityProfile create a new custom security profile.",
              "parameterOrder": [
                "parent"
              ],
              "path": "v1/{+parent}/securityProfiles",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "apigee.organizations.securityProfiles.create",
              "flatPath": "v1/organizations/{organizationsId}/securityProfiles",
              "response": {
                "$ref": "GoogleCloudApigeeV1SecurityProfile"
              },
              "request": {
                "$ref": "GoogleCloudApigeeV1SecurityProfile"
              },
              "httpMethod": "POST",
              "parameters": {
                "securityProfileId": {
                  "type": "string",
                  "location": "query",
                  "description": "Required. The ID to use for the SecurityProfile, which will become the final component of the action's resource name. This value should be 1-63 characters and validated by \"(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)\"."
                },
                "parent": {
                  "type": "string",
                  "location": "path",
                  "required": true,
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. Name of organization. Format: organizations/{org}"
                }
              }
            },
            "list": {
              "description": "ListSecurityProfiles lists all the security profiles associated with the org including attached and unattached profiles.",
              "path": "v1/{+parent}/securityProfiles",
              "response": {
                "$ref": "GoogleCloudApigeeV1ListSecurityProfilesResponse"
              },
              "parameterOrder": [
                "parent"
              ],
              "flatPath": "v1/organizations/{organizationsId}/securityProfiles",
              "id": "apigee.organizations.securityProfiles.list",
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "type": "string",
                  "required": true,
                  "location": "path",
                  "description": "Required. For a specific organization, list of all the security profiles. Format: `organizations/{org}`",
                  "pattern": "^organizations/[^/]+$"
                },
                "pageSize": {
                  "type": "integer",
                  "format": "int32",
                  "description": "The maximum number of profiles to return. The service may return fewer than this value. If unspecified, at most 50 profiles will be returned.",
                  "location": "query"
                },
                "pageToken": {
                  "location": "query",
                  "description": "A page token, received from a previous `ListSecurityProfiles` call. Provide this to retrieve the subsequent page.",
                  "type": "string"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "delete": {
              "flatPath": "v1/organizations/{organizationsId}/securityProfiles/{securityProfilesId}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleProtobufEmpty"
              },
              "description": "DeleteSecurityProfile delete a profile with all its revisions.",
              "path": "v1/{+name}",
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "type": "string",
                  "required": true,
                  "pattern": "^organizations/[^/]+/securityProfiles/[^/]+$",
                  "location": "path",
                  "description": "Required. Name of profile. Format: organizations/{org}/securityProfiles/{profile}"
                }
              },
              "id": "apigee.organizations.securityProfiles.delete"
            }
          }
        },
        "developers": {
          "resources": {
            "subscriptions": {
              "methods": {
                "create": {
                  "id": "apigee.organizations.developers.subscriptions.create",
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. Email address of the developer that is purchasing a subscription to the API product. Use the following structure in your request: `organizations/{org}/developers/{developer_email}`",
                      "required": true,
                      "type": "string",
                      "location": "path",
                      "pattern": "^organizations/[^/]+/developers/[^/]+$"
                    }
                  },
                  "path": "v1/{+parent}/subscriptions",
                  "description": "Creates a subscription to an API product. ",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1DeveloperSubscription"
                  },
                  "request": {
                    "$ref": "GoogleCloudApigeeV1DeveloperSubscription"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/subscriptions"
                },
                "get": {
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "required": true,
                      "location": "path",
                      "pattern": "^organizations/[^/]+/developers/[^/]+/subscriptions/[^/]+$",
                      "type": "string",
                      "description": "Required. Name of the API product subscription. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/subscriptions/{subscription}`"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "apigee.organizations.developers.subscriptions.get",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1DeveloperSubscription"
                  },
                  "path": "v1/{+name}",
                  "description": "Gets details for an API product subscription.",
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/subscriptions/{subscriptionsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ]
                },
                "expire": {
                  "request": {
                    "$ref": "GoogleCloudApigeeV1ExpireDeveloperSubscriptionRequest"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}:expire",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/subscriptions/{subscriptionsId}:expire",
                  "id": "apigee.organizations.developers.subscriptions.expire",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1DeveloperSubscription"
                  },
                  "description": "Expires an API product subscription immediately.",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "description": "Required. Name of the API product subscription. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/subscriptions/{subscription}`",
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "pattern": "^organizations/[^/]+/developers/[^/]+/subscriptions/[^/]+$"
                    }
                  }
                },
                "list": {
                  "description": "Lists all API product subscriptions for a developer.",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "Required. Email address of the developer. Use the following structure in your request: `organizations/{org}/developers/{developer_email}`",
                      "location": "path",
                      "required": true,
                      "pattern": "^organizations/[^/]+/developers/[^/]+$",
                      "type": "string"
                    },
                    "count": {
                      "format": "int32",
                      "type": "integer",
                      "location": "query",
                      "description": "Number of API product subscriptions to return in the API call. Use with `startKey` to provide more targeted filtering. Defaults to 100. The maximum limit is 1000."
                    },
                    "startKey": {
                      "description": "Name of the API product subscription from which to start displaying the list of subscriptions. If omitted, the list starts from the first item. For example, to view the API product subscriptions from 51-150, set the value of `startKey` to the name of the 51st subscription and set the value of `count` to 100.",
                      "type": "string",
                      "location": "query"
                    }
                  },
                  "id": "apigee.organizations.developers.subscriptions.list",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListDeveloperSubscriptionsResponse"
                  },
                  "path": "v1/{+parent}/subscriptions",
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/subscriptions"
                }
              }
            },
            "apps": {
              "methods": {
                "delete": {
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+$",
                      "required": true,
                      "location": "path",
                      "description": "Required. Name of the developer app. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}`"
                    }
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1DeveloperApp"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "id": "apigee.organizations.developers.apps.delete",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Deletes a developer app. **Note**: The delete operation is asynchronous. The developer app is deleted immediately, but its associated resources, such as app keys or access tokens, may take anywhere from a few seconds to a few minutes to be deleted.",
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}"
                },
                "create": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1DeveloperApp"
                  },
                  "path": "v1/{+parent}/apps",
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps",
                  "description": "Creates an app associated with a developer. This API associates the developer app with the specified API product and auto-generates an API key for the app to use in calls to API proxies inside that API product. The `name` is the unique ID of the app that you can use in API calls. The `DisplayName` (set as an attribute) appears in the UI. If you don't set the `DisplayName` attribute, the `name` appears in the UI.",
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/developers/[^/]+$",
                      "description": "Required. Name of the developer. Use the following structure in your request: `organizations/{org}/developers/{developer_email}`",
                      "location": "path",
                      "required": true
                    }
                  },
                  "id": "apigee.organizations.developers.apps.create",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1DeveloperApp"
                  }
                },
                "list": {
                  "description": "Lists all apps created by a developer in an Apigee organization. Optionally, you can request an expanded view of the developer apps. A maximum of 100 developer apps are returned per API call. You can paginate the list of deveoper apps returned using the `startKey` and `count` query parameters.",
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListDeveloperAppsResponse"
                  },
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "Required. Name of the developer. Use the following structure in your request: `organizations/{org}/developers/{developer_email}`",
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "pattern": "^organizations/[^/]+/developers/[^/]+$"
                    },
                    "shallowExpand": {
                      "description": "Optional. Specifies whether to expand the results in shallow mode. Set to `true` to expand the results in shallow mode. **Note**: If set to `true`, the `apigee.developerapps.get` permission is required.",
                      "type": "boolean",
                      "location": "query"
                    },
                    "expand": {
                      "location": "query",
                      "type": "boolean",
                      "description": "Optional. Specifies whether to expand the results. Set to `true` to expand the results. This query parameter is not valid if you use the `count` or `startKey` query parameters. **Note**: If set to `true`, the `apigee.developerapps.get` permission is required."
                    },
                    "startKey": {
                      "location": "query",
                      "description": "**Note**: Must be used in conjunction with the `count` parameter. Name of the developer app from which to start displaying the list of developer apps. For example, if you're returning 50 developer apps at a time (using the `count` query parameter), you can view developer apps 50-99 by entering the name of the 50th developer app. The developer app name is case sensitive.",
                      "type": "string"
                    },
                    "count": {
                      "type": "string",
                      "format": "int64",
                      "location": "query",
                      "description": "Number of developer apps to return in the API call. Use with the `startKey` parameter to provide more targeted filtering. The limit is 1000."
                    }
                  },
                  "path": "v1/{+parent}/apps",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "parent"
                  ],
                  "id": "apigee.organizations.developers.apps.list"
                },
                "generateKeyPairOrUpdateDeveloperAppStatus": {
                  "request": {
                    "$ref": "GoogleCloudApigeeV1DeveloperApp"
                  },
                  "id": "apigee.organizations.developers.apps.generateKeyPairOrUpdateDeveloperAppStatus",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Manages access to a developer app by enabling you to: * Approve or revoke a developer app * Generate a new consumer key and secret for a developer app To approve or revoke a developer app, set the `action` query parameter to `approve` or `revoke`, respectively, and the `Content-Type` header to `application/octet-stream`. If a developer app is revoked, none of its API keys are valid for API calls even though the keys are still approved. If successful, the API call returns the following HTTP status code: `204 No Content` To generate a new consumer key and secret for a developer app, pass the new key/secret details. Rather than replace an existing key, this API generates a new key. In this case, multiple key pairs may be associated with a single developer app. Each key pair has an independent status (`approve` or `revoke`) and expiration time. Any approved, non-expired key can be used in an API call. For example, if you're using API key rotation, you can generate new keys with expiration times that overlap keys that are going to expire. You might also generate a new consumer key/secret if the security of the original key/secret is compromised. The `keyExpiresIn` property defines the expiration time for the API key in milliseconds. If you don't set this property or set it to `-1`, the API key never expires. **Notes**: * When generating a new key/secret, this API replaces the existing attributes, notes, and callback URLs with those specified in the request. Include or exclude any existing information that you want to retain or delete, respectively. * To migrate existing consumer keys and secrets to hybrid from another system, see the CreateDeveloperAppKey API.",
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+$",
                      "description": "Required. Name of the developer app. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}`",
                      "location": "path",
                      "required": true
                    },
                    "action": {
                      "location": "query",
                      "description": "Action. Valid values are `approve` or `revoke`.",
                      "type": "string"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1DeveloperApp"
                  }
                },
                "get": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1DeveloperApp"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}",
                  "id": "apigee.organizations.developers.apps.get",
                  "httpMethod": "GET",
                  "parameters": {
                    "entity": {
                      "location": "query",
                      "type": "string",
                      "description": "**Note**: Must be used in conjunction with the `query` parameter. Set to `apiresources` to return the number of API resources that have been approved for access by a developer app in the specified Apigee organization."
                    },
                    "name": {
                      "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+$",
                      "description": "Required. Name of the developer app. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}`",
                      "type": "string",
                      "location": "path",
                      "required": true
                    },
                    "query": {
                      "location": "query",
                      "type": "string",
                      "description": "**Note**: Must be used in conjunction with the `entity` parameter. Set to `count` to return the number of API resources that have been approved for access by a developer app in the specified Apigee organization."
                    }
                  },
                  "description": "Returns the details for a developer app.",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}"
                },
                "update": {
                  "httpMethod": "PUT",
                  "parameters": {
                    "name": {
                      "required": true,
                      "location": "path",
                      "description": "Required. Name of the developer app. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}`",
                      "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+$",
                      "type": "string"
                    }
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1DeveloperApp"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "id": "apigee.organizations.developers.apps.update",
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1DeveloperApp"
                  },
                  "description": "Updates the details for a developer app. In addition, you can add an API product to a developer app and automatically generate an API key for the app to use when calling APIs in the API product. If you want to use an existing API key for the API product, add the API product to the API key using the UpdateDeveloperAppKey API. Using this API, you cannot update the following: * App name as it is the primary key used to identify the app and cannot be changed. * Scopes associated with the app. Instead, use the ReplaceDeveloperAppKey API. This API replaces the existing attributes with those specified in the request. Include or exclude any existing attributes that you want to retain or delete, respectively. **Note:** We recommend that you avoid making concurrent update requests for the same resource. Near-simultaneous writes to the same entity can result in conflicts and unexpected behavior. Ensure operations are sequential when modifying a single resource.",
                  "parameterOrder": [
                    "name"
                  ]
                },
                "attributes": {
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Attributes"
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/attributes",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "description": "Required. Name of the developer app. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}`",
                      "required": true,
                      "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+$",
                      "location": "path",
                      "type": "string"
                    }
                  },
                  "id": "apigee.organizations.developers.apps.attributes",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}/attributes",
                  "description": "Updates attributes for a developer app. This API replaces the current attributes with those specified in the request.",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1Attributes"
                  }
                }
              },
              "resources": {
                "keys": {
                  "resources": {
                    "apiproducts": {
                      "methods": {
                        "delete": {
                          "id": "apigee.organizations.developers.apps.keys.apiproducts.delete",
                          "response": {
                            "$ref": "GoogleCloudApigeeV1DeveloperAppKey"
                          },
                          "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/keys/{keysId}/apiproducts/{apiproductsId}",
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "parameterOrder": [
                            "name"
                          ],
                          "path": "v1/{+name}",
                          "httpMethod": "DELETE",
                          "parameters": {
                            "name": {
                              "location": "path",
                              "required": true,
                              "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+/keys/[^/]+/apiproducts/[^/]+$",
                              "type": "string",
                              "description": "Name of the API product in the developer app key in the following format: `organizations/{org}/developers/{developer_email}/apps/{app}/keys/{key}/apiproducts/{apiproduct}`"
                            }
                          },
                          "description": "Removes an API product from an app's consumer key. After the API product is removed, the app cannot access the API resources defined in that API product. **Note**: The consumer key is not removed, only its association with the API product."
                        },
                        "updateDeveloperAppKeyApiProduct": {
                          "description": "Approves or revokes the consumer key for an API product. After a consumer key is approved, the app can use it to access APIs. A consumer key that is revoked or pending cannot be used to access an API. Any access tokens associated with a revoked consumer key will remain active. However, Apigee checks the status of the consumer key and if set to `revoked` will not allow access to the API.",
                          "parameterOrder": [
                            "name"
                          ],
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "id": "apigee.organizations.developers.apps.keys.apiproducts.updateDeveloperAppKeyApiProduct",
                          "httpMethod": "POST",
                          "parameters": {
                            "name": {
                              "required": true,
                              "location": "path",
                              "type": "string",
                              "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+/keys/[^/]+/apiproducts/[^/]+$",
                              "description": "Name of the API product in the developer app key in the following format: `organizations/{org}/developers/{developer_email}/apps/{app}/keys/{key}/apiproducts/{apiproduct}`"
                            },
                            "action": {
                              "description": "Approve or revoke the consumer key by setting this value to `approve` or `revoke`, respectively.",
                              "type": "string",
                              "location": "query"
                            }
                          },
                          "response": {
                            "$ref": "GoogleProtobufEmpty"
                          },
                          "path": "v1/{+name}",
                          "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/keys/{keysId}/apiproducts/{apiproductsId}"
                        }
                      }
                    },
                    "create": {
                      "methods": {
                        "create": {
                          "description": "Creates a custom consumer key and secret for a developer app. This is particularly useful if you want to migrate existing consumer keys and secrets to Apigee from another system. Consumer keys and secrets can contain letters, numbers, underscores, and hyphens. No other special characters are allowed. To avoid service disruptions, a consumer key and secret should not exceed 2 KBs each. **Note**: When creating the consumer key and secret, an association to API products will not be made. Therefore, you should not specify the associated API products in your request. Instead, use the UpdateDeveloperAppKey API to make the association after the consumer key and secret are created. If a consumer key and secret already exist, you can keep them or delete them using the DeleteDeveloperAppKey API. **Note**: All keys start out with status=approved, even if status=revoked is passed when the key is created. To revoke a key, use the UpdateDeveloperAppKey API.",
                          "response": {
                            "$ref": "GoogleCloudApigeeV1DeveloperAppKey"
                          },
                          "request": {
                            "$ref": "GoogleCloudApigeeV1DeveloperAppKey"
                          },
                          "path": "v1/{+parent}/keys/create",
                          "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/keys/create",
                          "scopes": [
                            "https://www.googleapis.com/auth/cloud-platform"
                          ],
                          "parameterOrder": [
                            "parent"
                          ],
                          "httpMethod": "POST",
                          "parameters": {
                            "parent": {
                              "description": "Parent of the developer app key. Use the following structure in your request: 'organizations/{org}/developers/{developerEmail}/apps/{appName}'",
                              "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+$",
                              "location": "path",
                              "required": true,
                              "type": "string"
                            }
                          },
                          "id": "apigee.organizations.developers.apps.keys.create.create"
                        }
                      }
                    }
                  },
                  "methods": {
                    "get": {
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "type": "string",
                          "required": true,
                          "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+/keys/[^/]+$",
                          "location": "path",
                          "description": "Name of the developer app key. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}/keys/{key}`"
                        }
                      },
                      "parameterOrder": [
                        "name"
                      ],
                      "path": "v1/{+name}",
                      "id": "apigee.organizations.developers.apps.keys.get",
                      "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/keys/{keysId}",
                      "description": "Gets details for a consumer key for a developer app, including the key and secret value, associated API products, and other information.",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1DeveloperAppKey"
                      }
                    },
                    "create": {
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/keys",
                      "path": "v1/{+parent}/keys",
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1DeveloperAppKey"
                      },
                      "description": "Creates a custom consumer key and secret for a developer app. This is particularly useful if you want to migrate existing consumer keys and secrets to Apigee from another system. Consumer keys and secrets can contain letters, numbers, underscores, and hyphens. No other special characters are allowed. To avoid service disruptions, a consumer key and secret should not exceed 2 KBs each. **Note**: When creating the consumer key and secret, an association to API products will not be made. Therefore, you should not specify the associated API products in your request. Instead, use the UpdateDeveloperAppKey API to make the association after the consumer key and secret are created. If a consumer key and secret already exist, you can keep them or delete them using the DeleteDeveloperAppKey API. **Note**: All keys start out with status=approved, even if status=revoked is passed when the key is created. To revoke a key, use the UpdateDeveloperAppKey API.",
                      "request": {
                        "$ref": "GoogleCloudApigeeV1DeveloperAppKey"
                      },
                      "id": "apigee.organizations.developers.apps.keys.create",
                      "httpMethod": "POST",
                      "parameters": {
                        "parent": {
                          "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+$",
                          "type": "string",
                          "location": "path",
                          "required": true,
                          "description": "Parent of the developer app key. Use the following structure in your request: 'organizations/{org}/developers/{developerEmail}/apps/{appName}'"
                        }
                      }
                    },
                    "delete": {
                      "httpMethod": "DELETE",
                      "parameters": {
                        "name": {
                          "description": "Name of the developer app key. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}/keys/{key}`",
                          "required": true,
                          "type": "string",
                          "location": "path",
                          "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+/keys/[^/]+$"
                        }
                      },
                      "id": "apigee.organizations.developers.apps.keys.delete",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "parameterOrder": [
                        "name"
                      ],
                      "path": "v1/{+name}",
                      "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/keys/{keysId}",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1DeveloperAppKey"
                      },
                      "description": "Deletes an app's consumer key and removes all API products associated with the app. After the consumer key is deleted, it cannot be used to access any APIs. **Note**: After you delete a consumer key, you may want to: 1. Create a new consumer key and secret for the developer app using the CreateDeveloperAppKey API, and subsequently add an API product to the key using the UpdateDeveloperAppKey API. 2. Delete the developer app, if it is no longer required."
                    },
                    "updateDeveloperAppKey": {
                      "httpMethod": "POST",
                      "parameters": {
                        "name": {
                          "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+/keys/[^/]+$",
                          "type": "string",
                          "location": "path",
                          "description": "Name of the developer app key. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}/keys/{key}`",
                          "required": true
                        },
                        "action": {
                          "description": "Approve or revoke the consumer key by setting this value to `approve` or `revoke`, respectively. The `Content-Type` header must be set to `application/octet-stream`.",
                          "type": "string",
                          "location": "query"
                        }
                      },
                      "path": "v1/{+name}",
                      "request": {
                        "$ref": "GoogleCloudApigeeV1DeveloperAppKey"
                      },
                      "description": "Adds an API product to a developer app key, enabling the app that holds the key to access the API resources bundled in the API product. In addition, you can add attributes and scopes associated with the API product to the developer app key. The status of the key can be updated via \"action\" Query Parameter. None of the other fields can be updated via this API. This API replaces the existing attributes with those specified in the request. Include or exclude any existing attributes that you want to retain or delete, respectively. None of the other fields can be updated. You can use the same key to access all API products associated with the app.",
                      "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/keys/{keysId}",
                      "parameterOrder": [
                        "name"
                      ],
                      "id": "apigee.organizations.developers.apps.keys.updateDeveloperAppKey",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1DeveloperAppKey"
                      }
                    },
                    "replaceDeveloperAppKey": {
                      "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/keys/{keysId}",
                      "id": "apigee.organizations.developers.apps.keys.replaceDeveloperAppKey",
                      "description": "Updates the scope of an app. This API replaces the existing scopes with those specified in the request. Include or exclude any existing scopes that you want to retain or delete, respectively. The specified scopes must already be defined for the API products associated with the app. This API sets the `scopes` element under the `apiProducts` element in the attributes of the app.",
                      "parameterOrder": [
                        "name"
                      ],
                      "request": {
                        "$ref": "GoogleCloudApigeeV1DeveloperAppKey"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1DeveloperAppKey"
                      },
                      "httpMethod": "PUT",
                      "parameters": {
                        "name": {
                          "type": "string",
                          "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+/keys/[^/]+$",
                          "location": "path",
                          "required": true,
                          "description": "Name of the developer app key. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}/keys/{key}`"
                        }
                      },
                      "path": "v1/{+name}"
                    }
                  }
                },
                "attributes": {
                  "methods": {
                    "get": {
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Attribute"
                      },
                      "parameterOrder": [
                        "name"
                      ],
                      "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/attributes/{attributesId}",
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "type": "string",
                          "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+/attributes/[^/]+$",
                          "required": true,
                          "description": "Required. Name of the developer app attribute. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}/attributes/{attribute}`",
                          "location": "path"
                        }
                      },
                      "id": "apigee.organizations.developers.apps.attributes.get",
                      "path": "v1/{+name}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "description": "Returns a developer app attribute."
                    },
                    "delete": {
                      "id": "apigee.organizations.developers.apps.attributes.delete",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Attribute"
                      },
                      "description": "Deletes a developer app attribute.",
                      "httpMethod": "DELETE",
                      "parameters": {
                        "name": {
                          "location": "path",
                          "type": "string",
                          "description": "Required. Name of the developer app attribute. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}/attributes/{attribute}`",
                          "required": true,
                          "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+/attributes/[^/]+$"
                        }
                      },
                      "path": "v1/{+name}",
                      "parameterOrder": [
                        "name"
                      ],
                      "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/attributes/{attributesId}",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ]
                    },
                    "updateDeveloperAppAttribute": {
                      "description": "Updates a developer app attribute. **Note**: OAuth access tokens and Key Management Service (KMS) entities (apps, developers, and API products) are cached for 180 seconds (current default). Any custom attributes associated with these entities are cached for at least 180 seconds after the entity is accessed at runtime. Therefore, an `ExpiresIn` element on the OAuthV2 policy won't be able to expire an access token in less than 180 seconds.",
                      "request": {
                        "$ref": "GoogleCloudApigeeV1Attribute"
                      },
                      "httpMethod": "POST",
                      "parameters": {
                        "name": {
                          "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+/attributes/[^/]+$",
                          "type": "string",
                          "description": "Required. Name of the developer app attribute. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}/attributes/{attribute}`",
                          "required": true,
                          "location": "path"
                        }
                      },
                      "parameterOrder": [
                        "name"
                      ],
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Attribute"
                      },
                      "id": "apigee.organizations.developers.apps.attributes.updateDeveloperAppAttribute",
                      "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/attributes/{attributesId}",
                      "path": "v1/{+name}"
                    },
                    "list": {
                      "path": "v1/{+parent}/attributes",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform"
                      ],
                      "id": "apigee.organizations.developers.apps.attributes.list",
                      "response": {
                        "$ref": "GoogleCloudApigeeV1Attributes"
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "description": "Returns a list of all developer app attributes.",
                      "httpMethod": "GET",
                      "parameters": {
                        "parent": {
                          "pattern": "^organizations/[^/]+/developers/[^/]+/apps/[^/]+$",
                          "type": "string",
                          "required": true,
                          "description": "Required. Name of the developer app. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/apps/{app}`",
                          "location": "path"
                        }
                      },
                      "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/apps/{appsId}/attributes"
                    }
                  }
                }
              }
            },
            "attributes": {
              "methods": {
                "delete": {
                  "id": "apigee.organizations.developers.attributes.delete",
                  "description": "Deletes a developer attribute.",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Attribute"
                  },
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/developers/[^/]+/attributes/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. Name of the developer attribute. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/attributes/{attribute}`"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/attributes/{attributesId}"
                },
                "updateDeveloperAttribute": {
                  "parameterOrder": [
                    "name"
                  ],
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/developers/[^/]+/attributes/[^/]+$",
                      "location": "path",
                      "description": "Required. Name of the developer attribute. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/attributes/{attribute}`",
                      "type": "string",
                      "required": true
                    }
                  },
                  "description": "Updates a developer attribute. **Note**: OAuth access tokens and Key Management Service (KMS) entities (apps, developers, and API products) are cached for 180 seconds (default). Any custom attributes associated with these entities are cached for at least 180 seconds after the entity is accessed at runtime. Therefore, an `ExpiresIn` element on the OAuthV2 policy won't be able to expire an access token in less than 180 seconds.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Attribute"
                  },
                  "id": "apigee.organizations.developers.attributes.updateDeveloperAttribute",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1Attribute"
                  },
                  "path": "v1/{+name}",
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/attributes/{attributesId}"
                },
                "get": {
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/attributes/{attributesId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Attribute"
                  },
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "required": true,
                      "location": "path",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/developers/[^/]+/attributes/[^/]+$",
                      "description": "Required. Name of the developer attribute. Use the following structure in your request: `organizations/{org}/developers/{developer_email}/attributes/{attribute}`"
                    }
                  },
                  "id": "apigee.organizations.developers.attributes.get",
                  "description": "Returns the value of the specified developer attribute."
                },
                "list": {
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "type": "string",
                      "required": true,
                      "location": "path",
                      "pattern": "^organizations/[^/]+/developers/[^/]+$",
                      "description": "Required. Email address of the developer for which attributes are being listed. Use the following structure in your request: `organizations/{org}/developers/{developer_email}`"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+parent}/attributes",
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1Attributes"
                  },
                  "id": "apigee.organizations.developers.attributes.list",
                  "description": "Returns a list of all developer attributes.",
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/attributes"
                }
              }
            },
            "balance": {
              "methods": {
                "credit": {
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/balance:credit",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Credits the account balance for the developer.",
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1CreditDeveloperBalanceRequest"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/developers/[^/]+/balance$",
                      "description": "Required. Account balance for the developer. Use the following structure in your request: `organizations/{org}/developers/{developer}/balance`",
                      "required": true,
                      "location": "path"
                    }
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1DeveloperBalance"
                  },
                  "id": "apigee.organizations.developers.balance.credit",
                  "path": "v1/{+name}:credit"
                },
                "adjust": {
                  "description": "Adjust the prepaid balance for the developer. This API will be used in scenarios where the developer has been under-charged or over-charged.",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1AdjustDeveloperBalanceRequest"
                  },
                  "path": "v1/{+name}:adjust",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1DeveloperBalance"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "pattern": "^organizations/[^/]+/developers/[^/]+/balance$",
                      "type": "string",
                      "description": "Required. Account balance for the developer. Use the following structure in your request: `organizations/{org}/developers/{developer}/balance`",
                      "location": "path",
                      "required": true
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "apigee.organizations.developers.balance.adjust",
                  "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/balance:adjust"
                }
              }
            }
          },
          "methods": {
            "getMonetizationConfig": {
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. Monetization configuration for the developer. Use the following structure in your request: `organizations/{org}/developers/{developer}/monetizationConfig`",
                  "type": "string",
                  "pattern": "^organizations/[^/]+/developers/[^/]+/monetizationConfig$",
                  "required": true,
                  "location": "path"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "response": {
                "$ref": "GoogleCloudApigeeV1DeveloperMonetizationConfig"
              },
              "id": "apigee.organizations.developers.getMonetizationConfig",
              "parameterOrder": [
                "name"
              ],
              "description": "Gets the monetization configuration for the developer.",
              "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/monetizationConfig"
            },
            "create": {
              "response": {
                "$ref": "GoogleCloudApigeeV1Developer"
              },
              "id": "apigee.organizations.developers.create",
              "flatPath": "v1/organizations/{organizationsId}/developers",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "parent"
              ],
              "request": {
                "$ref": "GoogleCloudApigeeV1Developer"
              },
              "description": "Creates a developer. Once created, the developer can register an app and obtain an API key. At creation time, a developer is set as `active`. To change the developer status, use the SetDeveloperStatus API.",
              "path": "v1/{+parent}/developers",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. Name of the Apigee organization in which the developer is created. Use the following structure in your request: `organizations/{org}`.",
                  "location": "path",
                  "type": "string",
                  "required": true
                }
              }
            },
            "attributes": {
              "description": "Updates developer attributes. This API replaces the existing attributes with those specified in the request. Add new attributes, and include or exclude any existing attributes that you want to retain or remove, respectively. The custom attribute limit is 18. **Note**: OAuth access tokens and Key Management Service (KMS) entities (apps, developers, and API products) are cached for 180 seconds (default). Any custom attributes associated with these entities are cached for at least 180 seconds after the entity is accessed at runtime. Therefore, an `ExpiresIn` element on the OAuthV2 policy won't be able to expire an access token in less than 180 seconds.",
              "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/attributes",
              "request": {
                "$ref": "GoogleCloudApigeeV1Attributes"
              },
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1Attributes"
              },
              "id": "apigee.organizations.developers.attributes",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "required": true,
                  "type": "string",
                  "description": "Required. Email address of the developer for which attributes are being updated. Use the following structure in your request: `organizations/{org}/developers/{developer_email}`",
                  "location": "path",
                  "pattern": "^organizations/[^/]+/developers/[^/]+$"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+parent}/attributes"
            },
            "delete": {
              "path": "v1/{+name}",
              "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}",
              "id": "apigee.organizations.developers.delete",
              "response": {
                "$ref": "GoogleCloudApigeeV1Developer"
              },
              "parameterOrder": [
                "name"
              ],
              "description": "Deletes a developer. All apps and API keys associated with the developer are also removed. **Warning**: This API will permanently delete the developer and related artifacts. To avoid permanently deleting developers and their artifacts, set the developer status to `inactive` using the SetDeveloperStatus API. **Note**: The delete operation is asynchronous. The developer is deleted immediately, but its associated resources, such as apps and API keys, may take anywhere from a few seconds to a few minutes to be deleted.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/developers/[^/]+$",
                  "description": "Required. Email address of the developer. Use the following structure in your request: `organizations/{org}/developers/{developer_email}`",
                  "location": "path",
                  "type": "string",
                  "required": true
                }
              }
            },
            "updateMonetizationConfig": {
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "apigee.organizations.developers.updateMonetizationConfig",
              "description": "Updates the monetization configuration for the developer.",
              "request": {
                "$ref": "GoogleCloudApigeeV1DeveloperMonetizationConfig"
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1DeveloperMonetizationConfig"
              },
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "PUT",
              "parameters": {
                "name": {
                  "description": "Required. Monetization configuration for the developer. Use the following structure in your request: `organizations/{org}/developers/{developer}/monetizationConfig`",
                  "type": "string",
                  "pattern": "^organizations/[^/]+/developers/[^/]+/monetizationConfig$",
                  "location": "path",
                  "required": true
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/monetizationConfig"
            },
            "setDeveloperStatus": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}",
              "id": "apigee.organizations.developers.setDeveloperStatus",
              "response": {
                "$ref": "GoogleProtobufEmpty"
              },
              "description": "Sets the status of a developer. A developer is `active` by default. If you set a developer's status to `inactive`, the API keys assigned to the developer apps are no longer valid even though the API keys are set to `approved`. Inactive developers can still sign in to the developer portal and create apps; however, any new API keys generated during app creation won't work. To set the status of a developer, set the `action` query parameter to `active` or `inactive`, and the `Content-Type` header to `application/octet-stream`. If successful, the API call returns the following HTTP status code: `204 No Content`",
              "path": "v1/{+name}",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "pattern": "^organizations/[^/]+/developers/[^/]+$",
                  "description": "Required. Name of the developer. Use the following structure in your request: `organizations/{org}/developers/{developer_id}`",
                  "type": "string",
                  "required": true,
                  "location": "path"
                },
                "action": {
                  "location": "query",
                  "description": "Status of the developer. Valid values are `active` and `inactive`.",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ]
            },
            "get": {
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "type": "string",
                  "description": "Required. Email address of the developer. Use the following structure in your request: `organizations/{org}/developers/{developer_email}`",
                  "required": true,
                  "pattern": "^organizations/[^/]+/developers/[^/]+$",
                  "location": "path"
                },
                "action": {
                  "type": "string",
                  "location": "query",
                  "description": "Status of the developer. Valid values are `active` or `inactive`."
                }
              },
              "id": "apigee.organizations.developers.get",
              "path": "v1/{+name}",
              "description": "Returns the developer details, including the developer's name, email address, apps, and other information. **Note**: The response includes only the first 100 developer apps.",
              "parameterOrder": [
                "name"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}",
              "response": {
                "$ref": "GoogleCloudApigeeV1Developer"
              }
            },
            "getBalance": {
              "path": "v1/{+name}",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1DeveloperBalance"
              },
              "description": "Gets the account balance for the developer.",
              "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}/balance",
              "id": "apigee.organizations.developers.getBalance",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "required": true,
                  "pattern": "^organizations/[^/]+/developers/[^/]+/balance$",
                  "location": "path",
                  "description": "Required. Account balance for the developer. Use the following structure in your request: `organizations/{org}/developers/{developer}/balance`",
                  "type": "string"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            },
            "update": {
              "id": "apigee.organizations.developers.update",
              "description": "Updates a developer. This API replaces the existing developer details with those specified in the request. Include or exclude any existing details that you want to retain or delete, respectively. The custom attribute limit is 18. **Note**: OAuth access tokens and Key Management Service (KMS) entities (apps, developers, and API products) are cached for 180 seconds (current default). Any custom attributes associated with these entities are cached for at least 180 seconds after the entity is accessed at runtime. Therefore, an `ExpiresIn` element on the OAuthV2 policy won't be able to expire an access token in less than 180 seconds. **Note:** We recommend that you avoid making concurrent update requests for the same resource. Near-simultaneous writes to the same entity can result in conflicts and unexpected behavior. Ensure operations are sequential when modifying a single resource.",
              "request": {
                "$ref": "GoogleCloudApigeeV1Developer"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "response": {
                "$ref": "GoogleCloudApigeeV1Developer"
              },
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1/organizations/{organizationsId}/developers/{developersId}",
              "httpMethod": "PUT",
              "parameters": {
                "name": {
                  "description": "Required. Email address of the developer. Use the following structure in your request: `organizations/{org}/developers/{developer_email}`",
                  "required": true,
                  "type": "string",
                  "location": "path",
                  "pattern": "^organizations/[^/]+/developers/[^/]+$"
                }
              }
            },
            "list": {
              "response": {
                "$ref": "GoogleCloudApigeeV1ListOfDevelopersResponse"
              },
              "parameterOrder": [
                "parent"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/developers",
              "description": "Lists all developers in an organization by email address. By default, the response does not include company developers. Set the `includeCompany` query parameter to `true` to include company developers. **Note**: A maximum of 1000 developers are returned in the response. You paginate the list of developers returned using the `startKey` and `count` query parameters.",
              "path": "v1/{+parent}/developers",
              "id": "apigee.organizations.developers.list",
              "httpMethod": "GET",
              "parameters": {
                "count": {
                  "type": "string",
                  "format": "int64",
                  "description": "Optional. Number of developers to return in the API call. Use with the `startKey` parameter to provide more targeted filtering. The limit is 1000.",
                  "location": "query"
                },
                "ids": {
                  "description": "Optional. List of IDs to include, separated by commas.",
                  "type": "string",
                  "location": "query"
                },
                "app": {
                  "location": "query",
                  "description": "Optional. List only Developers that are associated with the app. Note that start_key, count are not applicable for this filter criteria.",
                  "type": "string"
                },
                "startKey": {
                  "location": "query",
                  "type": "string",
                  "description": "**Note**: Must be used in conjunction with the `count` parameter. Email address of the developer from which to start displaying the list of developers. For example, if the an unfiltered list returns: ``` westley@example.com fezzik@example.com buttercup@example.com ``` and your `startKey` is `fezzik@example.com`, the list returned will be ``` fezzik@example.com buttercup@example.com ```"
                },
                "expand": {
                  "location": "query",
                  "description": "Specifies whether to expand the results. Set to `true` to expand the results. This query parameter is not valid if you use the `count` or `startKey` query parameters.",
                  "type": "boolean"
                },
                "includeCompany": {
                  "description": "Flag that specifies whether to include company details in the response.",
                  "location": "query",
                  "type": "boolean"
                },
                "parent": {
                  "description": "Required. Name of the Apigee organization. Use the following structure in your request: `organizations/{org}`.",
                  "pattern": "^organizations/[^/]+$",
                  "required": true,
                  "type": "string",
                  "location": "path"
                }
              }
            }
          }
        },
        "hostStats": {
          "methods": {
            "get": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "description": "Retrieve metrics grouped by dimensions in host level. The types of metrics you can retrieve include traffic, message counts, API call latency, response size, and cache hits and counts. Dimensions let you view metrics in meaningful groups. You can optionally pass dimensions as path parameters to the `stats` API. If dimensions are not specified, the metrics are computed on the entire set of data for the given time range.",
              "path": "v1/{+name}",
              "httpMethod": "GET",
              "parameters": {
                "sort": {
                  "type": "string",
                  "description": "Flag that specifies if the sort order should be ascending or descending. Valid values are `DESC` and `ASC`.",
                  "location": "query"
                },
                "timeRange": {
                  "location": "query",
                  "type": "string",
                  "description": "Time interval for the interactive query. Time range is specified in GMT as `start~end`. For example: `04/15/2017 00:00~05/15/2017 23:59`"
                },
                "sortby": {
                  "type": "string",
                  "location": "query",
                  "description": "Comma-separated list of metrics to sort the final result."
                },
                "select": {
                  "location": "query",
                  "type": "string",
                  "description": "Comma-separated list of metrics. For example: `sum(message_count),sum(error_count)`"
                },
                "accuracy": {
                  "description": "No longer used by Apigee. Supported for backwards compatibility.",
                  "type": "string",
                  "location": "query"
                },
                "tsAscending": {
                  "description": "Flag that specifies whether to list timestamps in ascending (`true`) or descending (`false`) order. Apigee recommends that you set this value to `true` if you are using `sortby` with `sort=DESC`.",
                  "location": "query",
                  "type": "boolean"
                },
                "name": {
                  "pattern": "^organizations/[^/]+/hostStats/.*$",
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "description": "Required. Resource name for which the interactive query will be executed. Use the following format in your request: `organizations/{org}/hostStats/{dimensions}` Dimensions let you view metrics in meaningful groupings, such as `apiproxy`, `target_host`. The value of dimensions should be a comma-separated list as shown below `organizations/{org}/hostStats/apiproxy,request_verb`"
                },
                "limit": {
                  "type": "string",
                  "location": "query",
                  "description": "Maximum number of result items to return."
                },
                "envgroupHostname": {
                  "type": "string",
                  "location": "query",
                  "description": "Required. Hostname for which the interactive query will be executed."
                },
                "realtime": {
                  "type": "boolean",
                  "description": "No longer used by Apigee. Supported for backwards compatibility.",
                  "location": "query"
                },
                "tzo": {
                  "type": "string",
                  "location": "query",
                  "description": "Timezone offset value."
                },
                "topk": {
                  "type": "string",
                  "description": "Top number of results to return. For example, to return the top 5 results, set `topk=5`.",
                  "location": "query"
                },
                "offset": {
                  "location": "query",
                  "description": "Offset value. Use `offset` with `limit` to enable pagination of results. For example, to display results 11-20, set limit to `10` and offset to `10`.",
                  "type": "string"
                },
                "filter": {
                  "type": "string",
                  "description": "Flag that enables drill-down on specific dimension values.",
                  "location": "query"
                },
                "timeUnit": {
                  "description": "Granularity of metrics returned. Valid values include: `second`, `minute`, `hour`, `day`, `week`, or `month`.",
                  "type": "string",
                  "location": "query"
                }
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1Stats"
              },
              "id": "apigee.organizations.hostStats.get",
              "flatPath": "v1/organizations/{organizationsId}/hostStats/{hostStatsId}"
            }
          }
        },
        "instances": {
          "methods": {
            "reportStatus": {
              "httpMethod": "POST",
              "parameters": {
                "instance": {
                  "required": true,
                  "location": "path",
                  "description": "The name of the instance reporting this status. For SaaS the request will be rejected if no instance exists under this name. Format is organizations/{org}/instances/{instance}",
                  "type": "string",
                  "pattern": "^organizations/[^/]+/instances/[^/]+$"
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}:reportStatus",
              "request": {
                "$ref": "GoogleCloudApigeeV1ReportInstanceStatusRequest"
              },
              "response": {
                "$ref": "GoogleCloudApigeeV1ReportInstanceStatusResponse"
              },
              "path": "v1/{+instance}:reportStatus",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Reports the latest status for a runtime instance.",
              "parameterOrder": [
                "instance"
              ],
              "id": "apigee.organizations.instances.reportStatus"
            },
            "list": {
              "description": "Lists all Apigee runtime instances for the organization. **Note:** Not supported for Apigee hybrid.",
              "parameterOrder": [
                "parent"
              ],
              "path": "v1/{+parent}/instances",
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "required": true,
                  "location": "path",
                  "description": "Required. Name of the organization. Use the following structure in your request: `organizations/{org}`.",
                  "type": "string",
                  "pattern": "^organizations/[^/]+$"
                },
                "pageSize": {
                  "location": "query",
                  "format": "int32",
                  "description": "Maximum number of instances to return. Defaults to 25.",
                  "type": "integer"
                },
                "pageToken": {
                  "description": "Page token, returned from a previous ListInstances call, that you can use to retrieve the next page of content.",
                  "location": "query",
                  "type": "string"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1ListInstancesResponse"
              },
              "flatPath": "v1/organizations/{organizationsId}/instances",
              "id": "apigee.organizations.instances.list"
            },
            "get": {
              "response": {
                "$ref": "GoogleCloudApigeeV1Instance"
              },
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "pattern": "^organizations/[^/]+/instances/[^/]+$",
                  "description": "Required. Name of the instance. Use the following structure in your request: `organizations/{org}/instances/{instance}`.",
                  "type": "string"
                }
              },
              "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}",
              "id": "apigee.organizations.instances.get",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Gets the details for an Apigee runtime instance. **Note:** Not supported for Apigee hybrid."
            },
            "patch": {
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "required": true,
                  "type": "string",
                  "location": "path",
                  "description": "Required. Name of the instance. Use the following structure in your request: `organizations/{org}/instances/{instance}`.",
                  "pattern": "^organizations/[^/]+/instances/[^/]+$"
                },
                "updateMask": {
                  "type": "string",
                  "location": "query",
                  "format": "google-fieldmask",
                  "description": "List of fields to be updated."
                }
              },
              "path": "v1/{+name}",
              "id": "apigee.organizations.instances.patch",
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}",
              "request": {
                "$ref": "GoogleCloudApigeeV1Instance"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Updates an Apigee runtime instance. You can update the fields described in NodeConfig. No other fields will be updated. **Note:** Not supported for Apigee hybrid."
            },
            "create": {
              "id": "apigee.organizations.instances.create",
              "request": {
                "$ref": "GoogleCloudApigeeV1Instance"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "pattern": "^organizations/[^/]+$",
                  "description": "Required. Name of the organization. Use the following structure in your request: `organizations/{org}`.",
                  "required": true,
                  "type": "string",
                  "location": "path"
                }
              },
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "parameterOrder": [
                "parent"
              ],
              "description": "Creates an Apigee runtime instance. The instance is accessible from the authorized network configured on the organization. **Note:** Not supported for Apigee hybrid.",
              "path": "v1/{+parent}/instances",
              "flatPath": "v1/organizations/{organizationsId}/instances"
            },
            "delete": {
              "description": "Deletes an Apigee runtime instance. The instance stops serving requests and the runtime data is deleted. **Note:** Not supported for Apigee hybrid.",
              "id": "apigee.organizations.instances.delete",
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}",
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleLongrunningOperation"
              },
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "description": "Required. Name of the instance. Use the following structure in your request: `organizations/{org}/instances/{instance}`.",
                  "type": "string",
                  "location": "path",
                  "required": true,
                  "pattern": "^organizations/[^/]+/instances/[^/]+$"
                }
              }
            }
          },
          "resources": {
            "canaryevaluations": {
              "methods": {
                "create": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "GoogleCloudApigeeV1CanaryEvaluation"
                  },
                  "response": {
                    "$ref": "GoogleLongrunningOperation"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}/canaryevaluations",
                  "id": "apigee.organizations.instances.canaryevaluations.create",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. Name of the organization. Use the following structure in your request: `organizations/{org}/instances/{instance}`.",
                      "location": "path",
                      "type": "string",
                      "required": true,
                      "pattern": "^organizations/[^/]+/instances/[^/]+$"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Creates a new canary evaluation for an organization.",
                  "path": "v1/{+parent}/canaryevaluations"
                },
                "get": {
                  "description": "Gets a CanaryEvaluation for an organization.",
                  "id": "apigee.organizations.instances.canaryevaluations.get",
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1CanaryEvaluation"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+name}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^organizations/[^/]+/instances/[^/]+/canaryevaluations/[^/]+$",
                      "required": true,
                      "location": "path",
                      "description": "Required. Name of the CanaryEvaluation. Use the following structure in your request: `organizations/{org}/instances/*/canaryevaluations/{evaluation}`"
                    }
                  },
                  "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}/canaryevaluations/{canaryevaluationsId}"
                }
              }
            },
            "attachments": {
              "methods": {
                "create": {
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. Name of the instance. Use the following structure in your request: `organizations/{org}/instances/{instance}`.",
                      "required": true,
                      "pattern": "^organizations/[^/]+/instances/[^/]+$",
                      "location": "path",
                      "type": "string"
                    }
                  },
                  "response": {
                    "$ref": "GoogleLongrunningOperation"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}/attachments",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1InstanceAttachment"
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Creates a new attachment of an environment to an instance. **Note:** Not supported for Apigee hybrid.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "path": "v1/{+parent}/attachments",
                  "id": "apigee.organizations.instances.attachments.create"
                },
                "get": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1InstanceAttachment"
                  },
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}/attachments/{attachmentsId}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "required": true,
                      "location": "path",
                      "description": "Required. Name of the attachment. Use the following structure in your request: `organizations/{org}/instances/{instance}/attachments/{attachment}`",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/instances/[^/]+/attachments/[^/]+$"
                    }
                  },
                  "description": "Gets an attachment. **Note:** Not supported for Apigee hybrid.",
                  "id": "apigee.organizations.instances.attachments.get"
                },
                "list": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "GET",
                  "parameters": {
                    "pageSize": {
                      "location": "query",
                      "description": "Maximum number of instance attachments to return. Defaults to 25.",
                      "type": "integer",
                      "format": "int32"
                    },
                    "parent": {
                      "location": "path",
                      "description": "Required. Name of the organization. Use the following structure in your request: `organizations/{org}/instances/{instance}`",
                      "pattern": "^organizations/[^/]+/instances/[^/]+$",
                      "required": true,
                      "type": "string"
                    },
                    "pageToken": {
                      "description": "Page token, returned by a previous ListInstanceAttachments call, that you can use to retrieve the next page of content.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListInstanceAttachmentsResponse"
                  },
                  "description": "Lists all attachments to an instance. **Note:** Not supported for Apigee hybrid.",
                  "parameterOrder": [
                    "parent"
                  ],
                  "path": "v1/{+parent}/attachments",
                  "id": "apigee.organizations.instances.attachments.list",
                  "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}/attachments"
                },
                "delete": {
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "required": true,
                      "location": "path",
                      "description": "Required. Name of the attachment. Use the following structure in your request: `organizations/{org}/instances/{instance}/attachments/{attachment}`.",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/instances/[^/]+/attachments/[^/]+$"
                    }
                  },
                  "description": "Deletes an attachment. **Note:** Not supported for Apigee hybrid.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.instances.attachments.delete",
                  "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}/attachments/{attachmentsId}",
                  "response": {
                    "$ref": "GoogleLongrunningOperation"
                  }
                }
              }
            },
            "natAddresses": {
              "methods": {
                "delete": {
                  "description": "Deletes the NAT address. Connections that are actively using the address are drained before it is removed. **Note:** Not supported for Apigee hybrid.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "location": "path",
                      "required": true,
                      "description": "Required. Name of the nat address. Use the following structure in your request: `organizations/{org}/instances/{instances}/natAddresses/{nataddress}``",
                      "pattern": "^organizations/[^/]+/instances/[^/]+/natAddresses/[^/]+$"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}/natAddresses/{natAddressesId}",
                  "id": "apigee.organizations.instances.natAddresses.delete",
                  "response": {
                    "$ref": "GoogleLongrunningOperation"
                  },
                  "path": "v1/{+name}"
                },
                "list": {
                  "parameterOrder": [
                    "parent"
                  ],
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "description": "Lists the NAT addresses for an Apigee instance. **Note:** Not supported for Apigee hybrid.",
                  "path": "v1/{+parent}/natAddresses",
                  "httpMethod": "GET",
                  "parameters": {
                    "pageToken": {
                      "type": "string",
                      "location": "query",
                      "description": "Page token, returned from a previous ListNatAddresses call, that you can use to retrieve the next page of content."
                    },
                    "pageSize": {
                      "type": "integer",
                      "location": "query",
                      "description": "Maximum number of natAddresses to return. Defaults to 25.",
                      "format": "int32"
                    },
                    "parent": {
                      "type": "string",
                      "location": "path",
                      "pattern": "^organizations/[^/]+/instances/[^/]+$",
                      "required": true,
                      "description": "Required. Name of the instance. Use the following structure in your request: `organizations/{org}/instances/{instance}`"
                    }
                  },
                  "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}/natAddresses",
                  "id": "apigee.organizations.instances.natAddresses.list",
                  "response": {
                    "$ref": "GoogleCloudApigeeV1ListNatAddressesResponse"
                  }
                },
                "activate": {
                  "description": "Activates the NAT address. The Apigee instance can now use this for Internet egress traffic. **Note:** Not supported for Apigee hybrid.",
                  "id": "apigee.organizations.instances.natAddresses.activate",
                  "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}/natAddresses/{natAddressesId}:activate",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1ActivateNatAddressRequest"
                  },
                  "response": {
                    "$ref": "GoogleLongrunningOperation"
                  },
                  "path": "v1/{+name}:activate",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "description": "Required. Name of the nat address. Use the following structure in your request: `organizations/{org}/instances/{instances}/natAddresses/{nataddress}``",
                      "location": "path",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/instances/[^/]+/natAddresses/[^/]+$",
                      "required": true
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "name"
                  ]
                },
                "get": {
                  "description": "Gets the details of a NAT address. **Note:** Not supported for Apigee hybrid.",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "required": true,
                      "description": "Required. Name of the nat address. Use the following structure in your request: `organizations/{org}/instances/{instances}/natAddresses/{nataddress}`",
                      "location": "path",
                      "type": "string",
                      "pattern": "^organizations/[^/]+/instances/[^/]+/natAddresses/[^/]+$"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GoogleCloudApigeeV1NatAddress"
                  },
                  "path": "v1/{+name}",
                  "id": "apigee.organizations.instances.natAddresses.get",
                  "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}/natAddresses/{natAddressesId}"
                },
                "create": {
                  "response": {
                    "$ref": "GoogleLongrunningOperation"
                  },
                  "flatPath": "v1/organizations/{organizationsId}/instances/{instancesId}/natAddresses",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Creates a NAT address. The address is created in the RESERVED state and a static external IP address will be provisioned. At this time, the instance will not use this IP address for Internet egress traffic. The address can be activated for use once any required firewall IP whitelisting has been completed. **Note:** Not supported for Apigee hybrid.",
                  "request": {
                    "$ref": "GoogleCloudApigeeV1NatAddress"
                  },
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "Required. Name of the instance. Use the following structure in your request: `organizations/{org}/instances/{instance}`",
                      "location": "path",
                      "required": true,
                      "pattern": "^organizations/[^/]+/instances/[^/]+$",
                      "type": "string"
                    }
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "id": "apigee.organizations.instances.natAddresses.create",
                  "path": "v1/{+parent}/natAddresses"
                }
              }
            }
          }
        },
        "hostQueries": {
          "methods": {
            "getResult": {
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. Name of the asynchronous query result to get. Must be of the form `organizations/{org}/queries/{queryId}/result`.",
                  "pattern": "^organizations/[^/]+/hostQueries/[^/]+/result$",
                  "required": true,
                  "type": "string",
                  "location": "path"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "id": "apigee.organizations.hostQueries.getResult",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "path": "v1/{+name}",
              "response": {
                "$ref": "GoogleApiHttpBody"
              },
              "flatPath": "v1/organizations/{organizationsId}/hostQueries/{hostQueriesId}/result",
              "description": "After the query is completed, use this API to retrieve the results. If the request succeeds, and there is a non-zero result set, the result is downloaded to the client as a zipped JSON file. The name of the downloaded file will be: OfflineQueryResult-.zip Example: `OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip`"
            },
            "getResultView": {
              "response": {
                "$ref": "GoogleCloudApigeeV1AsyncQueryResultView"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "",
              "id": "apigee.organizations.hostQueries.getResultView",
              "flatPath": "v1/organizations/{organizationsId}/hostQueries/{hostQueriesId}/resultView",
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. Name of the asynchronous query result view to get. Must be of the form `organizations/{org}/queries/{queryId}/resultView`.",
                  "pattern": "^organizations/[^/]+/hostQueries/[^/]+/resultView$",
                  "type": "string",
                  "required": true,
                  "location": "path"
                }
              },
              "path": "v1/{+name}"
            },
            "list": {
              "response": {
                "$ref": "GoogleCloudApigeeV1ListAsyncQueriesResponse"
              },
              "id": "apigee.organizations.hostQueries.list",
              "description": "Return a list of Asynchronous Queries at host level.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "flatPath": "v1/organizations/{organizationsId}/hostQueries",
              "httpMethod": "GET",
              "parameters": {
                "to": {
                  "description": "Filter response list by returning asynchronous queries that created before this date time. Time must be in ISO date-time format like '2011-12-03T10:16:30Z'.",
                  "type": "string",
                  "location": "query"
                },
                "from": {
                  "location": "query",
                  "type": "string",
                  "description": "Filter response list by returning asynchronous queries that created after this date time. Time must be in ISO date-time format like '2011-12-03T10:15:30Z'."
                },
                "parent": {
                  "description": "Required. The parent resource name. Must be of the form `organizations/{org}`.",
                  "location": "path",
                  "required": true,
                  "pattern": "^organizations/[^/]+$",
                  "type": "string"
                },
                "inclQueriesWithoutReport": {
                  "description": "Flag to include asynchronous queries that don't have a report denifition.",
                  "location": "query",
                  "type": "string"
                },
                "envgroupHostname": {
                  "description": "Required. Filter response list by hostname.",
                  "location": "query",
                  "type": "string"
                },
                "status": {
                  "description": "Filter response list by asynchronous query status.",
                  "location": "query",
                  "type": "string"
                },
                "submittedBy": {
                  "location": "query",
                  "description": "Filter response list by user who submitted queries.",
                  "type": "string"
                },
                "dataset": {
                  "type": "string",
                  "description": "Filter response list by dataset. Example: `api`, `mint`",
                  "location": "query"
                }
              },
              "path": "v1/{+parent}/hostQueries",
              "parameterOrder": [
                "parent"
              ]
            },
            "get": {
              "description": "Get status of a query submitted at host level. If the query is still in progress, the `state` is set to \"running\" After the query has completed successfully, `state` is set to \"completed\"",
              "flatPath": "v1/organizations/{organizationsId}/hostQueries/{hostQueriesId}",
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "response": {
                "$ref": "GoogleCloudApigeeV1AsyncQuery"
              },
              "parameterOrder": [
                "name"
              ],
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "type": "string",
                  "pattern": "^organizations/[^/]+/hostQueries/[^/]+$",
                  "description": "Required. Name of the asynchronous query to get. Must be of the form `organizations/{org}/queries/{queryId}`.",
                  "required": true,
                  "location": "path"
                }
              },
              "id": "apigee.organizations.hostQueries.get"
            },
            "create": {
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "pattern": "^organizations/[^/]+$",
                  "type": "string",
                  "location": "path",
                  "description": "Required. The parent resource name. Must be of the form `organizations/{org}`.",
                  "required": true
                }
              },
              "description": "Submit a query at host level to be processed in the background. If the submission of the query succeeds, the API returns a 201 status and an ID that refer to the query. In addition to the HTTP status 201, the `state` of \"enqueued\" means that the request succeeded.",
              "response": {
                "$ref": "GoogleCloudApigeeV1AsyncQuery"
              },
              "request": {
                "$ref": "GoogleCloudApigeeV1Query"
              },
              "id": "apigee.organizations.hostQueries.create",
              "parameterOrder": [
                "parent"
              ],
              "flatPath": "v1/organizations/{organizationsId}/hostQueries",
              "path": "v1/{+parent}/hostQueries"
            }
          }
        },
        "optimizedHostStats": {
          "methods": {
            "get": {
              "path": "v1/{+name}",
              "response": {
                "$ref": "GoogleCloudApigeeV1OptimizedStats"
              },
              "id": "apigee.organizations.optimizedHostStats.get",
              "flatPath": "v1/organizations/{organizationsId}/optimizedHostStats/{optimizedHostStatsId}",
              "description": "Similar to GetHostStats except that the response is less verbose.",
              "httpMethod": "GET",
              "parameters": {
                "accuracy": {
                  "description": "No longer used by Apigee. Supported for backwards compatibility.",
                  "type": "string",
                  "location": "query"
                },
                "name": {
                  "required": true,
                  "location": "path",
                  "description": "Required. Resource name for which the interactive query will be executed. Use the following format in your request: `organizations/{organization_id}/optimizedHostStats/{dimensions}` Dimensions let you view metrics in meaningful groupings, such as `apiproxy`, `target_host`. The value of dimensions should be a comma-separated list as shown below: `organizations/{org}/optimizedHostStats/apiproxy,request_verb`",
                  "type": "string",
                  "pattern": "^organizations/[^/]+/optimizedHostStats/.*$"
                },
                "sortby": {
                  "description": "Comma-separated list of metrics used to sort the final result.",
                  "type": "string",
                  "location": "query"
                },
                "topk": {
                  "type": "string",
                  "description": "Top number of results to return. For example, to return the top 5 results, set `topk=5`.",
                  "location": "query"
                },
                "realtime": {
                  "location": "query",
                  "description": "No longer used by Apigee. Supported for backwards compatibility.",
                  "type": "boolean"
                },
                "select": {
                  "location": "query",
                  "type": "string",
                  "description": "Required. Comma-separated list of metrics. For example: `sum(message_count),sum(error_count)`"
                },
                "tsAscending": {
                  "description": "Flag that specifies whether to list timestamps in ascending (`true`) or descending (`false`) order. Apigee recommends that you set this value to `true` if you are using `sortby` with `sort=DESC`.",
                  "type": "boolean",
                  "location": "query"
                },
                "timeUnit": {
                  "location": "query",
                  "type": "string",
                  "description": "Granularity of metrics returned. Valid values include: `second`, `minute`, `hour`, `day`, `week`, or `month`."
                },
                "tzo": {
                  "location": "query",
                  "description": "Timezone offset value.",
                  "type": "string"
                },
                "sort": {
                  "type": "string",
                  "location": "query",
                  "description": "Flag that specifies whether the sort order should be ascending or descending. Valid values include `DESC` and `ASC`."
                },
                "limit": {
                  "description": "Maximum number of result items to return.",
                  "type": "string",
                  "location": "query"
                },
                "timeRange": {
                  "description": "Required. Time interval for the interactive query. Time range is specified in GMT as `start~end`. For example: `04/15/2017 00:00~05/15/2017 23:59`.",
                  "location": "query",
                  "type": "string"
                },
                "offset": {
                  "location": "query",
                  "description": "Offset value. Use `offset` with `limit` to enable pagination of results. For example, to display results 11-20, set limit to `10` and offset to `10`.",
                  "type": "string"
                },
                "envgroupHostname": {
                  "type": "string",
                  "location": "query",
                  "description": "Required. Hostname for which the interactive query will be executed."
                },
                "filter": {
                  "description": "Filter that enables you to drill-down on specific dimension values.",
                  "location": "query",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ]
            }
          }
        }
      },
      "methods": {
        "delete": {
          "parameterOrder": [
            "name"
          ],
          "httpMethod": "DELETE",
          "parameters": {
            "retention": {
              "type": "string",
              "enum": [
                "DELETION_RETENTION_UNSPECIFIED",
                "MINIMUM",
                "NO_RETENTION"
              ],
              "description": "Optional. This setting is applicable only for organizations that are soft-deleted (i.e., BillingType is not EVALUATION). It controls how long Organization data will be retained after the initial delete operation completes. During this period, the Organization may be restored to its last known state. After this period, the Organization will no longer be able to be restored. **Note: During the data retention period specified using this field, the Apigee organization cannot be recreated in the same Google Cloud project.**",
              "location": "query",
              "enumDescriptions": [
                "Default data retention setting of seven days will be applied.",
                "Organization data will be retained for the minimum period of 24 hours.",
                "Does not retain organization data and permanently deletes the organization immediately. **Warning:** You will NOT be able to restore the Apigee organization when using this option."
              ]
            },
            "name": {
              "pattern": "^organizations/[^/]+$",
              "description": "Required. Name of the organization. Use the following structure in your request: `organizations/{org}`",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "path": "v1/{+name}",
          "description": "Delete an Apigee organization. For organizations with BillingType EVALUATION, an immediate deletion is performed. For paid organizations (Subscription or Pay-as-you-go), a soft-deletion is performed by default. The organization can be restored within the soft-deletion period, which is specified using the `retention` field in the request or by filing a support ticket with Apigee. During the data retention period specified in the request, the Apigee organization cannot be recreated in the same Google Cloud project. **IMPORTANT: The default data retention setting for this operation is 7 days. To permanently delete the organization in 24 hours, set the retention parameter to `MINIMUM`.**",
          "response": {
            "$ref": "GoogleLongrunningOperation"
          },
          "flatPath": "v1/organizations/{organizationsId}",
          "id": "apigee.organizations.delete",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ]
        },
        "getProjectMapping": {
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "pattern": "^organizations/[^/]+$",
              "location": "path",
              "required": true,
              "description": "Required. Apigee organization name in the following format: `organizations/{org}`",
              "type": "string"
            }
          },
          "path": "v1/{+name}:getProjectMapping",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "response": {
            "$ref": "GoogleCloudApigeeV1OrganizationProjectMapping"
          },
          "flatPath": "v1/organizations/{organizationsId}:getProjectMapping",
          "parameterOrder": [
            "name"
          ],
          "description": "Gets the project ID and region for an Apigee organization.",
          "id": "apigee.organizations.getProjectMapping"
        },
        "getSyncAuthorization": {
          "description": "Lists the service accounts with the permissions required to allow the Synchronizer to download environment data from the control plane. An ETag is returned in the response to `getSyncAuthorization`. Pass that ETag when calling [setSyncAuthorization](setSyncAuthorization) to ensure that you are updating the correct version. If you don't pass the ETag in the call to `setSyncAuthorization`, then the existing authorization is overwritten indiscriminately. For more information, see [Configure the Synchronizer](https://cloud.google.com/apigee/docs/hybrid/latest/synchronizer-access). **Note**: Available to Apigee hybrid only.",
          "path": "v1/{+name}:getSyncAuthorization",
          "httpMethod": "POST",
          "parameters": {
            "name": {
              "type": "string",
              "required": true,
              "location": "path",
              "pattern": "^organizations/[^/]+$",
              "description": "Required. Name of the Apigee organization. Use the following structure in your request: `organizations/{org}`"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "request": {
            "$ref": "GoogleCloudApigeeV1GetSyncAuthorizationRequest"
          },
          "response": {
            "$ref": "GoogleCloudApigeeV1SyncAuthorization"
          },
          "id": "apigee.organizations.getSyncAuthorization",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "flatPath": "v1/organizations/{organizationsId}:getSyncAuthorization"
        },
        "getSecuritySettings": {
          "parameterOrder": [
            "name"
          ],
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "required": true,
              "location": "path",
              "type": "string",
              "pattern": "^organizations/[^/]+/securitySettings$",
              "description": "Required. The name of the SecuritySettings to retrieve. This will always be: 'organizations/{org}/securitySettings'."
            }
          },
          "path": "v1/{+name}",
          "description": "GetSecuritySettings gets the security settings for API Security.",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "flatPath": "v1/organizations/{organizationsId}/securitySettings",
          "response": {
            "$ref": "GoogleCloudApigeeV1SecuritySettings"
          },
          "id": "apigee.organizations.getSecuritySettings"
        },
        "list": {
          "flatPath": "v1/organizations",
          "description": "Lists the Apigee organizations and associated Google Cloud projects that you have permission to access. See [Understanding organizations](https://cloud.google.com/apigee/docs/api-platform/fundamentals/organization-structure).",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "parameterOrder": [
            "parent"
          ],
          "response": {
            "$ref": "GoogleCloudApigeeV1ListOrganizationsResponse"
          },
          "path": "v1/{+parent}",
          "id": "apigee.organizations.list",
          "httpMethod": "GET",
          "parameters": {
            "parent": {
              "location": "path",
              "description": "Required. Use the following structure in your request: `organizations`",
              "required": true,
              "pattern": "^organizations$",
              "type": "string"
            }
          }
        },
        "getControlPlaneAccess": {
          "description": "Lists the service accounts allowed to access Apigee control plane directly for limited functionality. **Note**: Available to Apigee hybrid only.",
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "GoogleCloudApigeeV1ControlPlaneAccess"
          },
          "path": "v1/{+name}",
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "description": "Required. Resource name of the Control Plane Access. Use the following structure in your request: `organizations/{org}/controlPlaneAccess`",
              "type": "string",
              "pattern": "^organizations/[^/]+/controlPlaneAccess$",
              "required": true,
              "location": "path"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "flatPath": "v1/organizations/{organizationsId}/controlPlaneAccess",
          "id": "apigee.organizations.getControlPlaneAccess"
        },
        "get": {
          "flatPath": "v1/organizations/{organizationsId}",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "response": {
            "$ref": "GoogleCloudApigeeV1Organization"
          },
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "required": true,
              "location": "path",
              "description": "Required. Apigee organization name in the following format: `organizations/{org}`",
              "pattern": "^organizations/[^/]+$",
              "type": "string"
            }
          },
          "id": "apigee.organizations.get",
          "path": "v1/{+name}",
          "parameterOrder": [
            "name"
          ],
          "description": "Gets the profile for an Apigee organization. See [Understanding organizations](https://cloud.google.com/apigee/docs/api-platform/fundamentals/organization-structure)."
        },
        "getMcpServerConfig": {
          "path": "v1/{+name}",
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "required": true,
              "type": "string",
              "location": "path",
              "pattern": "^organizations/[^/]+/mcpServerConfig$",
              "description": "Required. Name of the deployed MCP server configuration for the organization in the singleton form: `organizations/{org}/mcpServerConfig`."
            }
          },
          "description": "Gets the deployed MCP server configuration for an organization. McpServerConfig is an org-scoped singleton (one per organization). The returned configuration may be up to 30 seconds out of date by default.",
          "flatPath": "v1/organizations/{organizationsId}/mcpServerConfig",
          "response": {
            "$ref": "GoogleCloudApigeeV1McpServerConfig"
          },
          "id": "apigee.organizations.getMcpServerConfig",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "parameterOrder": [
            "name"
          ]
        },
        "update": {
          "response": {
            "$ref": "GoogleCloudApigeeV1Organization"
          },
          "flatPath": "v1/organizations/{organizationsId}",
          "description": "Updates the properties for an Apigee organization. No other fields in the organization profile will be updated.",
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "httpMethod": "PUT",
          "parameters": {
            "name": {
              "required": true,
              "location": "path",
              "description": "Required. Apigee organization name in the following format: `organizations/{org}`",
              "type": "string",
              "pattern": "^organizations/[^/]+$"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "id": "apigee.organizations.update",
          "request": {
            "$ref": "GoogleCloudApigeeV1Organization"
          },
          "path": "v1/{+name}"
        },
        "updateControlPlaneAccess": {
          "parameterOrder": [
            "name"
          ],
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "httpMethod": "PATCH",
          "parameters": {
            "updateMask": {
              "type": "string",
              "format": "google-fieldmask",
              "description": "List of fields to be updated. Fields that can be updated: synchronizer_identities, analytics_publisher_identities, watcher_identities.",
              "location": "query"
            },
            "name": {
              "location": "path",
              "required": true,
              "pattern": "^organizations/[^/]+/controlPlaneAccess$",
              "description": "Identifier. The resource name of the ControlPlaneAccess. Format: \"organizations/{org}/controlPlaneAccess\"",
              "type": "string"
            }
          },
          "description": "Updates the permissions required to allow Apigee runtime-plane components access to the control plane. Currently, the permissions required are to: 1. Allow runtime components to publish analytics data to the control plane. **Note**: Available to Apigee hybrid only.",
          "request": {
            "$ref": "GoogleCloudApigeeV1ControlPlaneAccess"
          },
          "response": {
            "$ref": "GoogleLongrunningOperation"
          },
          "id": "apigee.organizations.updateControlPlaneAccess",
          "path": "v1/{+name}",
          "flatPath": "v1/organizations/{organizationsId}/controlPlaneAccess"
        },
        "getRuntimeConfig": {
          "parameterOrder": [
            "name"
          ],
          "id": "apigee.organizations.getRuntimeConfig",
          "path": "v1/{+name}",
          "flatPath": "v1/organizations/{organizationsId}/runtimeConfig",
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "description": "Required. Name of the runtime config for the organization in the following format: 'organizations/{org}/runtimeConfig'.",
              "location": "path",
              "pattern": "^organizations/[^/]+/runtimeConfig$",
              "required": true,
              "type": "string"
            }
          },
          "description": "Get runtime config for an organization.",
          "response": {
            "$ref": "GoogleCloudApigeeV1RuntimeConfig"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ]
        },
        "updateSecuritySettings": {
          "parameterOrder": [
            "name"
          ],
          "path": "v1/{+name}",
          "request": {
            "$ref": "GoogleCloudApigeeV1SecuritySettings"
          },
          "id": "apigee.organizations.updateSecuritySettings",
          "flatPath": "v1/organizations/{organizationsId}/securitySettings",
          "description": "UpdateSecuritySettings updates the current security settings for API Security.",
          "httpMethod": "PATCH",
          "parameters": {
            "name": {
              "type": "string",
              "pattern": "^organizations/[^/]+/securitySettings$",
              "required": true,
              "location": "path",
              "description": "Identifier. Full resource name is always `organizations/{org}/securitySettings`."
            },
            "updateMask": {
              "type": "string",
              "description": "Optional. The list of fields to update. Allowed fields are: - ml_retraining_feedback_enabled",
              "location": "query",
              "format": "google-fieldmask"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "response": {
            "$ref": "GoogleCloudApigeeV1SecuritySettings"
          }
        },
        "setSyncAuthorization": {
          "path": "v1/{+name}:setSyncAuthorization",
          "response": {
            "$ref": "GoogleCloudApigeeV1SyncAuthorization"
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "httpMethod": "POST",
          "parameters": {
            "name": {
              "location": "path",
              "type": "string",
              "pattern": "^organizations/[^/]+$",
              "required": true,
              "description": "Required. Name of the Apigee organization. Use the following structure in your request: `organizations/{org}`"
            }
          },
          "flatPath": "v1/organizations/{organizationsId}:setSyncAuthorization",
          "description": "Sets the permissions required to allow the Synchronizer to download environment data from the control plane. You must call this API to enable proper functioning of hybrid. Pass the ETag when calling `setSyncAuthorization` to ensure that you are updating the correct version. To get an ETag, call [getSyncAuthorization](getSyncAuthorization). If you don't pass the ETag in the call to `setSyncAuthorization`, then the existing authorization is overwritten indiscriminately. For more information, see [Configure the Synchronizer](https://cloud.google.com/apigee/docs/hybrid/latest/synchronizer-access). **Note**: Available to Apigee hybrid only.",
          "id": "apigee.organizations.setSyncAuthorization",
          "parameterOrder": [
            "name"
          ],
          "request": {
            "$ref": "GoogleCloudApigeeV1SyncAuthorization"
          }
        },
        "create": {
          "request": {
            "$ref": "GoogleCloudApigeeV1Organization"
          },
          "parameterOrder": [],
          "id": "apigee.organizations.create",
          "httpMethod": "POST",
          "parameters": {
            "parent": {
              "location": "query",
              "type": "string",
              "description": "Required. Name of the Google Cloud project in which to associate the Apigee organization. Pass the information as a query parameter using the following structure in your request: `projects/`"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "path": "v1/organizations",
          "response": {
            "$ref": "GoogleLongrunningOperation"
          },
          "description": "Creates an Apigee organization. See [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).",
          "flatPath": "v1/organizations"
        },
        "getDeployedIngressConfig": {
          "httpMethod": "GET",
          "parameters": {
            "view": {
              "enumDescriptions": [
                "The default/unset value. The API will default to the BASIC view.",
                "Include all ingress config data necessary for the runtime to configure ingress, but no more. Routing rules will include only basepath and destination environment. This the default value.",
                "Include all ingress config data, including internal debug info for each routing rule such as the proxy claiming a particular basepath and when the routing rule first appeared in the env group."
              ],
              "location": "query",
              "description": "When set to FULL, additional details about the specific deployments receiving traffic will be included in the IngressConfig response's RoutingRules.",
              "enum": [
                "INGRESS_CONFIG_VIEW_UNSPECIFIED",
                "BASIC",
                "FULL"
              ],
              "type": "string"
            },
            "name": {
              "pattern": "^organizations/[^/]+/deployedIngressConfig$",
              "description": "Required. Name of the deployed configuration for the organization in the following format: 'organizations/{org}/deployedIngressConfig'.",
              "required": true,
              "location": "path",
              "type": "string"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "path": "v1/{+name}",
          "id": "apigee.organizations.getDeployedIngressConfig",
          "description": "Gets the deployed ingress configuration for an organization.",
          "response": {
            "$ref": "GoogleCloudApigeeV1IngressConfig"
          },
          "parameterOrder": [
            "name"
          ],
          "flatPath": "v1/organizations/{organizationsId}/deployedIngressConfig"
        },
        "setAddons": {
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "parameterOrder": [
            "org"
          ],
          "request": {
            "$ref": "GoogleCloudApigeeV1SetAddonsRequest"
          },
          "path": "v1/{+org}:setAddons",
          "response": {
            "$ref": "GoogleLongrunningOperation"
          },
          "id": "apigee.organizations.setAddons",
          "description": "Configures the add-ons for the Apigee organization. The existing add-on configuration will be fully replaced.",
          "httpMethod": "POST",
          "parameters": {
            "org": {
              "type": "string",
              "required": true,
              "location": "path",
              "description": "Required. Name of the organization. Use the following structure in your request: `organizations/{org}`",
              "pattern": "^organizations/[^/]+$"
            }
          },
          "flatPath": "v1/organizations/{organizationsId}:setAddons"
        }
      }
    },
    "hybrid": {
      "resources": {
        "issuers": {
          "methods": {
            "list": {
              "response": {
                "$ref": "GoogleCloudApigeeV1ListHybridIssuersResponse"
              },
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "location": "path",
                  "required": true,
                  "type": "string",
                  "description": "Required. Must be of the form `hybrid/issuers`.",
                  "pattern": "^hybrid/issuers$"
                }
              },
              "id": "apigee.hybrid.issuers.list",
              "flatPath": "v1/hybrid/issuers",
              "parameterOrder": [
                "name"
              ],
              "path": "v1/{+name}",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "description": "Lists hybrid services and its trusted issuers service account ids. This api is authenticated and unauthorized(allow all the users) and used by runtime authn-authz service to query control plane's issuer service account ids."
            }
          }
        }
      }
    }
  },
  "id": "apigee:v1",
  "endpoints": [
    {
      "location": "us",
      "endpointUrl": "https://apigee.us.rep.googleapis.com/",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://apigee.eu.rep.googleapis.com/",
      "location": "eu",
      "description": "Regional Endpoint"
    },
    {
      "endpointUrl": "https://apigee.in.rep.googleapis.com/",
      "description": "Regional Endpoint",
      "location": "in"
    },
    {
      "description": "Regional Endpoint",
      "location": "sa",
      "endpointUrl": "https://apigee.sa.rep.googleapis.com/"
    },
    {
      "endpointUrl": "https://apigee.ch.rep.googleapis.com/",
      "location": "ch",
      "description": "Regional Endpoint"
    }
  ],
  "rootUrl": "https://apigee.googleapis.com/",
  "schemas": {
    "GoogleCloudApigeeV1SecurityFeedbackFeedbackContext": {
      "id": "GoogleCloudApigeeV1SecurityFeedbackFeedbackContext",
      "type": "object",
      "description": "FeedbackContext captures the intent of the submitted feedback.",
      "properties": {
        "attribute": {
          "description": "Required. The attribute the user is providing feedback about.",
          "enumDescriptions": [
            "Unspecified attribute.",
            "Values will be a list of environments.",
            "Values will be a list of IP addresses. This could be either IPv4 or IPv6."
          ],
          "enum": [
            "ATTRIBUTE_UNSPECIFIED",
            "ATTRIBUTE_ENVIRONMENTS",
            "ATTRIBUTE_IP_ADDRESS_RANGES"
          ],
          "type": "string"
        },
        "values": {
          "description": "Required. The values of the attribute the user is providing feedback about.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      }
    },
    "GoogleCloudApigeeV1ExpireAppGroupSubscriptionRequest": {
      "type": "object",
      "properties": {},
      "id": "GoogleCloudApigeeV1ExpireAppGroupSubscriptionRequest",
      "description": "Request for ExpireAppGroupSubscription."
    },
    "GoogleCloudApigeeV1DataCollector": {
      "properties": {
        "type": {
          "type": "string",
          "description": "Immutable. The type of data this data collector will collect.",
          "enumDescriptions": [
            "For future compatibility.",
            "For integer values.",
            "For float values.",
            "For string values.",
            "For boolean values.",
            "For datetime values."
          ],
          "enum": [
            "TYPE_UNSPECIFIED",
            "INTEGER",
            "FLOAT",
            "STRING",
            "BOOLEAN",
            "DATETIME"
          ]
        },
        "description": {
          "type": "string",
          "description": "A description of the data collector."
        },
        "name": {
          "type": "string",
          "description": "ID of the data collector. Must begin with `dc_`."
        },
        "createdAt": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The time at which the data collector was created in milliseconds since the epoch.",
          "format": "int64"
        },
        "lastModifiedAt": {
          "format": "int64",
          "readOnly": true,
          "type": "string",
          "description": "Output only. The time at which the Data Collector was last updated in milliseconds since the epoch."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1DataCollector",
      "description": "Data collector configuration."
    },
    "GoogleCloudApigeeV1MetricAggregation": {
      "properties": {
        "name": {
          "description": "Name of the metric",
          "type": "string"
        },
        "order": {
          "enum": [
            "ORDER_UNSPECIFIED",
            "ASCENDING",
            "DESCENDING"
          ],
          "enumDescriptions": [
            "Unspecified order. Default is Descending.",
            "Ascending sort order.",
            "Descending sort order."
          ],
          "description": "Ordering for this aggregation in the result. For time series this is ignored since the ordering of points depends only on the timestamp, not the values.",
          "type": "string"
        },
        "aggregation": {
          "description": "Aggregation function associated with the metric.",
          "enum": [
            "AGGREGATION_FUNCTION_UNSPECIFIED",
            "AVG",
            "SUM",
            "MIN",
            "MAX",
            "COUNT_DISTINCT"
          ],
          "type": "string",
          "enumDescriptions": [
            "Unspecified Aggregation function.",
            "Average.",
            "Summation.",
            "Min.",
            "Max.",
            "Count distinct"
          ]
        }
      },
      "description": "The optionally aggregated metric to query with its ordering.",
      "id": "GoogleCloudApigeeV1MetricAggregation",
      "type": "object"
    },
    "GoogleCloudApigeeV1SecurityActionHttpHeader": {
      "properties": {
        "value": {
          "description": "The header value to be sent to the target.",
          "type": "string"
        },
        "name": {
          "description": "The header name to be sent to the target.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1SecurityActionHttpHeader",
      "description": "An HTTP header.",
      "type": "object"
    },
    "GoogleCloudApigeeV1DeploymentChangeReport": {
      "type": "object",
      "description": "Response for GenerateDeployChangeReport and GenerateUndeployChangeReport. This report contains any validation failures that would cause the deployment to be rejected, as well changes and conflicts in routing that may occur due to the new deployment. The existence of a routing warning does not necessarily imply that the deployment request is bad, if the desired state of the deployment request is to effect a routing change. The primary purposes of the routing messages are: 1) To inform users of routing changes that may have an effect on traffic currently being routed to other existing deployments. 2) To warn users if some base path in the proxy will not receive traffic due to an existing deployment having already claimed that base path. The presence of routing conflicts/changes will not cause non-dry-run DeployApiProxy/UndeployApiProxy requests to be rejected.",
      "properties": {
        "routingConflicts": {
          "type": "array",
          "description": "All base path conflicts detected for a deployment request.",
          "items": {
            "$ref": "GoogleCloudApigeeV1DeploymentChangeReportRoutingConflict"
          }
        },
        "routingChanges": {
          "type": "array",
          "description": "All routing changes that may result from a deployment request.",
          "items": {
            "$ref": "GoogleCloudApigeeV1DeploymentChangeReportRoutingChange"
          }
        },
        "validationErrors": {
          "description": "Validation errors that would cause the deployment change request to be rejected.",
          "$ref": "GoogleRpcPreconditionFailure"
        }
      },
      "id": "GoogleCloudApigeeV1DeploymentChangeReport"
    },
    "GoogleCloudApigeeV1Attributes": {
      "id": "GoogleCloudApigeeV1Attributes",
      "properties": {
        "attribute": {
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          },
          "type": "array",
          "description": "List of attributes."
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1MaintenanceUpdatePolicyMaintenanceWindow": {
      "properties": {
        "day": {
          "type": "string",
          "description": "Required. Preferred day of the week for maintenance, e.g. MONDAY, TUESDAY, etc.",
          "enum": [
            "DAY_OF_WEEK_UNSPECIFIED",
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY",
            "SATURDAY",
            "SUNDAY"
          ],
          "enumDescriptions": [
            "The day of the week is unspecified.",
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday",
            "Sunday"
          ]
        },
        "startTime": {
          "description": "Required. The start time (UTC) of the maintenance window.",
          "$ref": "GoogleTypeTimeOfDay"
        }
      },
      "id": "GoogleCloudApigeeV1MaintenanceUpdatePolicyMaintenanceWindow",
      "type": "object",
      "description": "MaintenanceWindow specifies the preferred day of the week and time of day to perform maintenance."
    },
    "GoogleCloudApigeeV1ActivateNatAddressRequest": {
      "description": "Request for ActivateNatAddressRequest. Activate the nat address request.",
      "type": "object",
      "properties": {},
      "id": "GoogleCloudApigeeV1ActivateNatAddressRequest"
    },
    "GoogleCloudApigeeV1SchemaSchemaElement": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the field."
        },
        "properties": {
          "$ref": "GoogleCloudApigeeV1SchemaSchemaProperty",
          "description": "Properties for the schema field. For example: { \"createTime\": \"2016-02-26T10:23:09.592Z\", \"custom\": \"false\", \"type\": \"string\" }"
        }
      },
      "id": "GoogleCloudApigeeV1SchemaSchemaElement",
      "description": "Message type for the schema element"
    },
    "GoogleCloudApigeeV1EntityMetadata": {
      "type": "object",
      "description": "Metadata common to many entities in this API.",
      "id": "GoogleCloudApigeeV1EntityMetadata",
      "properties": {
        "subType": {
          "description": "The type of entity described",
          "type": "string"
        },
        "lastModifiedAt": {
          "type": "string",
          "format": "int64",
          "description": "Time at which the API proxy was most recently modified, in milliseconds since epoch."
        },
        "createdAt": {
          "format": "int64",
          "type": "string",
          "description": "Time at which the API proxy was created, in milliseconds since epoch."
        }
      }
    },
    "GoogleCloudApigeeV1MoveApiProductRequest": {
      "description": "Moves API product to a different space.",
      "id": "GoogleCloudApigeeV1MoveApiProductRequest",
      "properties": {
        "space": {
          "description": "Optional. Resource ID of the space to move the API product to. If unspecified, the API product will be moved to the organization level.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1FlowHook": {
      "properties": {
        "continueOnError": {
          "type": "boolean",
          "description": "Optional. Flag that specifies whether execution should continue if the flow hook throws an exception. Set to `true` to continue execution. Set to `false` to stop execution if the flow hook throws an exception. Defaults to `true`."
        },
        "sharedFlow": {
          "type": "string",
          "description": "Shared flow attached to this flow hook, or empty if there is none attached."
        },
        "flowHookPoint": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Where in the API call flow the flow hook is invoked. Must be one of `PreProxyFlowHook`, `PostProxyFlowHook`, `PreTargetFlowHook`, or `PostTargetFlowHook`."
        },
        "description": {
          "description": "Description of the flow hook.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1FlowHook",
      "type": "object"
    },
    "GoogleCloudApigeeV1ProfileConfigThreat": {
      "description": "By default, following policies will be included: - XMLThreatProtection - JSONThreatProtection",
      "type": "object",
      "id": "GoogleCloudApigeeV1ProfileConfigThreat",
      "properties": {}
    },
    "GoogleCloudApigeeV1ComputeEnvironmentScoresResponse": {
      "id": "GoogleCloudApigeeV1ComputeEnvironmentScoresResponse",
      "type": "object",
      "description": "Response for ComputeEnvironmentScores.",
      "properties": {
        "scores": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Score"
          },
          "description": "List of scores. One score per day."
        },
        "nextPageToken": {
          "description": "A page token, received from a previous `ComputeScore` call. Provide this to retrieve the subsequent page.",
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1EndpointAttachment": {
      "id": "GoogleCloudApigeeV1EndpointAttachment",
      "description": "Apigee endpoint attachment. For more information, see [Southbound networking patterns] (https://cloud.google.com/apigee/docs/api-platform/architecture/southbound-networking-patterns-endpoints).",
      "type": "object",
      "properties": {
        "serviceAttachment": {
          "description": "Format: projects/*/regions/*/serviceAttachments/*",
          "type": "string"
        },
        "location": {
          "type": "string",
          "description": "Required. Location of the endpoint attachment."
        },
        "host": {
          "readOnly": true,
          "description": "Output only. Host that can be used in either the HTTP target endpoint directly or as the host in target server.",
          "type": "string"
        },
        "connectionState": {
          "type": "string",
          "enum": [
            "CONNECTION_STATE_UNSPECIFIED",
            "UNAVAILABLE",
            "PENDING",
            "ACCEPTED",
            "REJECTED",
            "CLOSED",
            "FROZEN",
            "NEEDS_ATTENTION",
            "ACCEPTED_LIMITED_CAPACITY"
          ],
          "description": "Output only. State of the endpoint attachment connection to the service attachment.",
          "enumDescriptions": [
            "The connection state has not been set.",
            "The connection state is unavailable at this time, possibly because the endpoint attachment is currently being provisioned.",
            "The connection is pending acceptance by the PSC producer.",
            "The connection has been accepted by the PSC producer.",
            "The connection has been rejected by the PSC producer.",
            "The connection has been closed by the PSC producer and will not serve traffic going forward.",
            "The connection has been frozen by the PSC producer and will not serve traffic.",
            "The connection has been accepted by the PSC producer, but it is not ready to serve the traffic due to producer side issues.",
            "The connection has been accepted by the PSC producer, but it will only serve capacity limited traffic. The producer needs to take further actions to increase capacity for this connection."
          ],
          "readOnly": true
        },
        "name": {
          "description": "Name of the endpoint attachment. Use the following structure in your request: `organizations/{org}/endpointAttachments/{endpoint_attachment}`",
          "type": "string"
        },
        "state": {
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "ACTIVE",
            "DELETING",
            "UPDATING"
          ],
          "readOnly": true,
          "description": "Output only. State of the endpoint attachment. Values other than `ACTIVE` mean the resource is not ready to use.",
          "type": "string",
          "enumDescriptions": [
            "Resource is in an unspecified state.",
            "Resource is being created.",
            "Resource is provisioned and ready to use.",
            "The resource is being deleted.",
            "The resource is being updated."
          ]
        }
      }
    },
    "GoogleCloudApigeeV1ProfileConfigCORS": {
      "properties": {},
      "description": "Checks to see if you have CORS policy in place.",
      "type": "object",
      "id": "GoogleCloudApigeeV1ProfileConfigCORS"
    },
    "GoogleCloudApigeeV1Instance": {
      "description": "Apigee runtime instance.",
      "type": "object",
      "properties": {
        "runtimeVersion": {
          "description": "Output only. Version of the runtime system running in the instance. The runtime system is the set of components that serve the API Proxy traffic in your Environments.",
          "readOnly": true,
          "type": "string"
        },
        "host": {
          "description": "Output only. Internal hostname or IP address of the Apigee endpoint used by clients to connect to the service.",
          "readOnly": true,
          "type": "string"
        },
        "displayName": {
          "description": "Optional. Display name for the instance.",
          "type": "string"
        },
        "scheduledMaintenance": {
          "description": "Output only. Time and date of the scheduled maintenance for this instance. This field is only populated for instances that have opted into Maintenance Window and if there is an upcoming maintenance. Cleared once the maintenance is complete.",
          "readOnly": true,
          "$ref": "GoogleCloudApigeeV1ScheduledMaintenance"
        },
        "isVersionLocked": {
          "description": "Output only. Indicates whether the instance is version locked. If true, the instance will not be updated by automated runtime rollouts. This is only supported for Apigee X instances.",
          "readOnly": true,
          "type": "boolean"
        },
        "serviceAttachment": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Resource name of the service attachment created for the instance in the format: `projects/*/regions/*/serviceAttachments/*` Apigee customers can privately forward traffic to this service attachment using the PSC endpoints."
        },
        "description": {
          "description": "Optional. Description of the instance.",
          "type": "string"
        },
        "ipRange": {
          "description": "Optional. Comma-separated list of CIDR blocks of length 22 and/or 28 used to create the Apigee instance. Providing CIDR ranges is optional. You can provide just /22 or /28 or both (or neither). Ranges you provide should be freely available as part of a larger named range you have allocated to the Service Networking peering. If this parameter is not provided, Apigee automatically requests an available /22 and /28 CIDR block from Service Networking. Use the /22 CIDR block for configuring your firewall needs to allow traffic from Apigee. Input formats: `a.b.c.d/22` or `e.f.g.h/28` or `a.b.c.d/22,e.f.g.h/28`",
          "type": "string"
        },
        "maintenanceUpdatePolicy": {
          "description": "Optional. Apigee customers can set the preferred window to perform maintenance on the instance (day of the week and time of day).",
          "$ref": "GoogleCloudApigeeV1MaintenanceUpdatePolicy"
        },
        "consumerAcceptList": {
          "description": "Optional. Customer accept list represents the list of projects (id/number) on customer side that can privately connect to the service attachment. It is an optional field which the customers can provide during the instance creation. By default, the customer project associated with the Apigee organization will be included to the list.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "createdAt": {
          "readOnly": true,
          "type": "string",
          "format": "int64",
          "description": "Output only. Time the instance was created in milliseconds since epoch."
        },
        "accessLoggingConfig": {
          "$ref": "GoogleCloudApigeeV1AccessLoggingConfig",
          "description": "Optional. Access logging configuration enables the access logging feature at the instance. Apigee customers can enable access logging to ship the access logs to their own project's cloud logging."
        },
        "peeringCidrRange": {
          "enum": [
            "CIDR_RANGE_UNSPECIFIED",
            "SLASH_16",
            "SLASH_17",
            "SLASH_18",
            "SLASH_19",
            "SLASH_20",
            "SLASH_22",
            "SLASH_23"
          ],
          "enumDescriptions": [
            "Range not specified.",
            "`/16` CIDR range.",
            "`/17` CIDR range.",
            "`/18` CIDR range.",
            "`/19` CIDR range.",
            "`/20` CIDR range.",
            "`/22` CIDR range. Supported for evaluation only.",
            "`/23` CIDR range. Supported for evaluation only."
          ],
          "type": "string",
          "description": "Optional. Size of the CIDR block range that will be reserved by the instance. PAID organizations support `SLASH_16` to `SLASH_20` and defaults to `SLASH_16`. Evaluation organizations support only `SLASH_23`.",
          "deprecated": true
        },
        "location": {
          "type": "string",
          "description": "Required. Compute Engine location where the instance resides."
        },
        "diskEncryptionKeyName": {
          "description": "Optional. Customer Managed Encryption Key (CMEK) used for disk and volume encryption. If not specified, a Google-Managed encryption key will be used. Use the following format: `projects/([^/]+)/locations/([^/]+)/keyRings/([^/]+)/cryptoKeys/([^/]+)`",
          "type": "string"
        },
        "lastModifiedAt": {
          "description": "Output only. Time the instance was last modified in milliseconds since epoch.",
          "type": "string",
          "format": "int64",
          "readOnly": true
        },
        "port": {
          "readOnly": true,
          "description": "Output only. Port number of the exposed Apigee endpoint.",
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "Required. Resource ID of the instance. Values must match the regular expression `^a-z{0,30}[a-z\\d]$`."
        },
        "state": {
          "readOnly": true,
          "description": "Output only. State of the instance. Values other than `ACTIVE` means the resource is not ready to use.",
          "type": "string",
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "ACTIVE",
            "DELETING",
            "UPDATING"
          ],
          "enumDescriptions": [
            "Resource is in an unspecified state.",
            "Resource is being created.",
            "Resource is provisioned and ready to use.",
            "The resource is being deleted.",
            "The resource is being updated."
          ]
        }
      },
      "id": "GoogleCloudApigeeV1Instance"
    },
    "GoogleCloudApigeeV1AdjustDeveloperBalanceRequest": {
      "description": "Request for AdjustDeveloperBalance.",
      "id": "GoogleCloudApigeeV1AdjustDeveloperBalanceRequest",
      "properties": {
        "adjustment": {
          "$ref": "GoogleTypeMoney",
          "description": "* A positive value of `adjustment` means that that the API provider wants to adjust the balance for an under-charged developer i.e. the balance of the developer will decrease. * A negative value of `adjustment` means that that the API provider wants to adjust the balance for an over-charged developer i.e. the balance of the developer will increase. NOTE: An adjustment cannot increase the balance of the developer beyond the balance as of the most recent credit. For example, if a developer's balance is updated to be $100, and they spend $10, a negative adjustment can only increase the balance of the developer to $100."
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1SecurityProfileV2ProfileAssessmentConfig": {
      "type": "object",
      "properties": {
        "weight": {
          "type": "string",
          "description": "The weight of the assessment.",
          "enumDescriptions": [
            "The weight is unspecified.",
            "The weight is minor.",
            "The weight is moderate.",
            "The weight is major."
          ],
          "enum": [
            "WEIGHT_UNSPECIFIED",
            "MINOR",
            "MODERATE",
            "MAJOR"
          ]
        },
        "include": {
          "description": "Include only these Gateway Types.",
          "$ref": "GoogleCloudApigeeV1SecurityProfileV2ProfileAssessmentConfigApiHubGatewayTypeArray"
        }
      },
      "id": "GoogleCloudApigeeV1SecurityProfileV2ProfileAssessmentConfig",
      "description": "The configuration definition for a specific assessment."
    },
    "GoogleCloudApigeeV1DnsZonePeeringConfig": {
      "id": "GoogleCloudApigeeV1DnsZonePeeringConfig",
      "type": "object",
      "description": "Fields for DNS PEERING zone.",
      "properties": {
        "targetProjectId": {
          "type": "string",
          "description": "Required. The ID of the project that contains the producer VPC network."
        },
        "targetNetworkId": {
          "description": "Required. The VPC network where the records for that private DNS zone's namespace are available. Apigee will be performing DNS peering with this VPC network.",
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1ListOfDevelopersResponse": {
      "id": "GoogleCloudApigeeV1ListOfDevelopersResponse",
      "properties": {
        "developer": {
          "description": "List of developers.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Developer"
          }
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1DebugMask": {
      "properties": {
        "responseXPaths": {
          "description": "List of XPaths that specify the XML elements to be filtered from XML response message payloads.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "namespaces": {
          "description": "Map of namespaces to URIs.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "requestXPaths": {
          "type": "array",
          "description": "List of XPaths that specify the XML elements to be filtered from XML request message payloads.",
          "items": {
            "type": "string"
          }
        },
        "faultXPaths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of XPaths that specify the XML elements to be filtered from XML payloads in error flows."
        },
        "name": {
          "type": "string",
          "description": "Name of the debug mask."
        },
        "variables": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of variables that should be masked from the debug output."
        },
        "responseJSONPaths": {
          "description": "List of JSON paths that specify the JSON elements to be filtered from JSON response message payloads.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "faultJSONPaths": {
          "type": "array",
          "description": "List of JSON paths that specify the JSON elements to be filtered from JSON payloads in error flows.",
          "items": {
            "type": "string"
          }
        },
        "requestJSONPaths": {
          "type": "array",
          "description": "List of JSON paths that specify the JSON elements to be filtered from JSON request message payloads.",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1DebugMask"
    },
    "GoogleCloudApigeeV1RevisionStatus": {
      "id": "GoogleCloudApigeeV1RevisionStatus",
      "description": "The status of a specific resource revision.",
      "properties": {
        "revisionId": {
          "description": "The revision of the resource.",
          "type": "string"
        },
        "replicas": {
          "type": "integer",
          "format": "int32",
          "description": "The number of replicas that have successfully loaded this revision."
        },
        "jsonSpec": {
          "type": "string",
          "description": "The json content of the resource revision. Large specs should be sent individually via the spec field to avoid hitting request size limits."
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1UpdateError"
          },
          "description": "Errors reported when attempting to load this revision."
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1ListEnvironmentGroupAttachmentsResponse": {
      "properties": {
        "environmentGroupAttachments": {
          "items": {
            "$ref": "GoogleCloudApigeeV1EnvironmentGroupAttachment"
          },
          "description": "EnvironmentGroupAttachments for the specified environment group.",
          "type": "array"
        },
        "nextPageToken": {
          "description": "Page token that you can include in a ListEnvironmentGroupAttachments request to retrieve the next page. If omitted, no subsequent pages exist.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1ListEnvironmentGroupAttachmentsResponse",
      "type": "object",
      "description": "Response for ListEnvironmentGroupAttachments."
    },
    "GoogleCloudApigeeV1ProfileConfigAuthorization": {
      "description": "By default, following policies will be included: - JWS - JWT - OAuth - BasicAuth - APIKey",
      "type": "object",
      "id": "GoogleCloudApigeeV1ProfileConfigAuthorization",
      "properties": {}
    },
    "GoogleCloudApigeeV1DimensionMetric": {
      "properties": {
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Metric"
          },
          "description": "List of metrics."
        },
        "name": {
          "description": "Comma joined dimension names. E.g. \"dim1_name,dim2_name\". Deprecated. If name already has comma before join, we may get wrong splits. Please use individual_names.",
          "deprecated": true,
          "type": "string"
        },
        "individualNames": {
          "description": "Individual dimension names. E.g. [\"dim1_name\", \"dim2_name\"].",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "id": "GoogleCloudApigeeV1DimensionMetric",
      "description": "Encapsulates a metric grouped by dimension.",
      "type": "object"
    },
    "GoogleCloudApigeeV1Space": {
      "properties": {
        "createTime": {
          "format": "google-datetime",
          "readOnly": true,
          "description": "Output only. Create timestamp of the space.",
          "type": "string"
        },
        "name": {
          "description": "Output only. Identifier. Id of the space. This field is used as the resource name, and must follow [AIP-122](https://google.aip.dev/122) guidelines.",
          "type": "string",
          "readOnly": true
        },
        "updateTime": {
          "description": "Output only. Last modified timestamp of the space.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "displayName": {
          "description": "Optional. Display name of the space.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1Space",
      "description": "Organization space resource.",
      "type": "object"
    },
    "GoogleCloudApigeeV1ConnectorsPlatformConfig": {
      "type": "object",
      "description": "Configuration for the Connectors Platform add-on.",
      "properties": {
        "enabled": {
          "description": "Flag that specifies whether the Connectors Platform add-on is enabled.",
          "type": "boolean"
        },
        "expiresAt": {
          "readOnly": true,
          "format": "int64",
          "description": "Output only. Time at which the Connectors Platform add-on expires in milliseconds since epoch. If unspecified, the add-on will never expire.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1ConnectorsPlatformConfig"
    },
    "GoogleIamV1SetIamPolicyRequest": {
      "id": "GoogleIamV1SetIamPolicyRequest",
      "description": "Request message for `SetIamPolicy` method.",
      "type": "object",
      "properties": {
        "policy": {
          "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them.",
          "$ref": "GoogleIamV1Policy"
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
          "format": "google-fieldmask"
        }
      }
    },
    "GoogleCloudApigeeV1QueryMetric": {
      "properties": {
        "alias": {
          "description": "Alias for the metric. Alias will be used to replace metric name in query results.",
          "type": "string"
        },
        "function": {
          "description": "Aggregation function: avg, min, max, or sum.",
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "Required. Metric name."
        },
        "value": {
          "type": "string",
          "description": "Operand value should be provided when operator is set."
        },
        "operator": {
          "type": "string",
          "description": "One of `+`, `-`, `/`, `%`, `*`."
        }
      },
      "id": "GoogleCloudApigeeV1QueryMetric",
      "type": "object",
      "description": "More info about Metric: https://docs.apigee.com/api-platform/analytics/analytics-reference#metrics"
    },
    "GoogleCloudApigeeV1UpdateAppGroupAppKeyRequest": {
      "description": "Request for UpdateAppGroupAppKey",
      "id": "GoogleCloudApigeeV1UpdateAppGroupAppKeyRequest",
      "properties": {
        "apiProducts": {
          "items": {
            "type": "string"
          },
          "description": "The list of API products that will be associated with the credential. This list will be appended to the existing list of associated API Products for this App Key. Duplicates will be ignored.",
          "type": "array"
        },
        "action": {
          "description": "Approve or revoke the consumer key by setting this value to `approve` or `revoke` respectively. The `Content-Type` header, if set, must be set to `application/octet-stream`, with empty body.",
          "type": "string"
        },
        "appGroupAppKey": {
          "description": "Note that only Scopes and Attributes of the AppGroupAppKey can be amended. Scopes and Attributes mentioned in the request will be inserted and the existing scopes and attributes will be removed.",
          "$ref": "GoogleCloudApigeeV1AppGroupAppKey"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1ListHybridIssuersResponse": {
      "properties": {
        "issuers": {
          "items": {
            "$ref": "GoogleCloudApigeeV1ServiceIssuersMapping"
          },
          "description": "Lists of hybrid services and its trusted issuer email ids.",
          "type": "array"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1ListHybridIssuersResponse"
    },
    "GoogleCloudApigeeV1SharedFlowRevision": {
      "properties": {
        "sharedFlows": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the shared flow names included in this shared flow revision."
        },
        "resourceFiles": {
          "description": "The resource files included in this shared flow revision.",
          "$ref": "GoogleCloudApigeeV1ResourceFiles"
        },
        "entityMetaDataAsProperties": {
          "type": "object",
          "description": "A Key-Value map of metadata about this shared flow revision.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "type": {
          "type": "string",
          "description": "The string \"Application\""
        },
        "resources": {
          "description": "A list of the resources included in this shared flow revision formatted as \"{type}://{name}\".",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "policies": {
          "type": "array",
          "description": "A list of policy names included in this shared flow revision.",
          "items": {
            "type": "string"
          }
        },
        "configurationVersion": {
          "$ref": "GoogleCloudApigeeV1ConfigVersion",
          "description": "The version of the configuration schema to which this shared flow conforms. The only supported value currently is majorVersion 4 and minorVersion 0. This setting may be used in the future to enable evolution of the shared flow format."
        },
        "displayName": {
          "description": "The human readable name of this shared flow.",
          "type": "string"
        },
        "createdAt": {
          "format": "int64",
          "description": "Time at which this shared flow revision was created, in milliseconds since epoch.",
          "type": "string"
        },
        "revision": {
          "type": "string",
          "description": "The resource ID of this revision."
        },
        "contextInfo": {
          "description": "A textual description of the shared flow revision.",
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "The resource ID of the parent shared flow."
        },
        "lastModifiedAt": {
          "description": "Time at which this shared flow revision was most recently modified, in milliseconds since epoch.",
          "format": "int64",
          "type": "string"
        },
        "description": {
          "description": "Description of the shared flow revision.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1SharedFlowRevision",
      "description": "The metadata describing a shared flow revision.",
      "type": "object"
    },
    "GoogleCloudApigeeV1GraphQLOperationConfig": {
      "properties": {
        "apiSource": {
          "description": "Required. Name of the API proxy endpoint or remote service with which the GraphQL operation and quota are associated.",
          "type": "string"
        },
        "operations": {
          "items": {
            "$ref": "GoogleCloudApigeeV1GraphQLOperation"
          },
          "type": "array",
          "description": "Required. List of GraphQL name/operation type pairs for the proxy or remote service to which quota will be applied. If only operation types are specified, the quota will be applied to all GraphQL requests irrespective of the GraphQL name. **Note**: Currently, you can specify only a single GraphQLOperation. Specifying more than one will cause the operation to fail."
        },
        "quota": {
          "description": "Quota parameters to be enforced for the resources, methods, and API source combination. If none are specified, quota enforcement will not be done.",
          "$ref": "GoogleCloudApigeeV1Quota"
        },
        "attributes": {
          "description": "Custom attributes associated with the operation.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          }
        }
      },
      "id": "GoogleCloudApigeeV1GraphQLOperationConfig",
      "description": "Binds the resources in a proxy or remote service with the GraphQL operation and its associated quota enforcement.",
      "type": "object"
    },
    "GoogleCloudApigeeV1DeleteResponse": {
      "description": "Response for certain delete operations.",
      "id": "GoogleCloudApigeeV1DeleteResponse",
      "type": "object",
      "properties": {
        "errorCode": {
          "type": "string",
          "description": "Unique error code for the request, if any."
        },
        "message": {
          "description": "Description of the operation.",
          "type": "string"
        },
        "status": {
          "description": "Status of the operation.",
          "type": "string"
        },
        "requestId": {
          "type": "string",
          "description": "Unique ID of the request."
        },
        "gcpResource": {
          "type": "string",
          "description": "Google Cloud name of deleted resource."
        }
      }
    },
    "GoogleCloudApigeeV1DebugSessionTransaction": {
      "id": "GoogleCloudApigeeV1DebugSessionTransaction",
      "properties": {
        "point": {
          "items": {
            "$ref": "GoogleCloudApigeeV1Point"
          },
          "type": "array",
          "description": "List of debug data collected by runtime plane at various defined points in the flow."
        },
        "completed": {
          "description": "Flag indicating whether a transaction is completed or not",
          "type": "boolean"
        }
      },
      "type": "object",
      "description": "A transaction contains all of the debug information of the entire message flow of an API call processed by the runtime plane. The information is collected and recorded at critical points of the message flow in the runtime apiproxy."
    },
    "GoogleCloudApigeeV1ApiDoc": {
      "description": "`ApiDoc` represents an API catalog item. Catalog items are used in two ways in a portal: - Users can browse and interact with a visual representation of the API documentation - The `api_product_name` field provides a link to a backing [API product] (/apigee/docs/reference/apis/apigee/rest/v1/organizations.apiproducts). Through this link, portal users can create and manage developer apps linked to one or more API products.",
      "properties": {
        "graphqlEndpointUrl": {
          "deprecated": true,
          "description": "Optional. DEPRECATED: manage documentation through the `getDocumentation` and `updateDocumentation` methods",
          "type": "string"
        },
        "title": {
          "description": "Required. The user-facing name of the catalog item. `title` must be a non-empty string with a max length of 255 characters.",
          "type": "string"
        },
        "visibility": {
          "type": "boolean",
          "description": "Optional. DEPRECATED: use the `published` field instead"
        },
        "id": {
          "format": "int64",
          "type": "string",
          "description": "Output only. The ID of the catalog item.",
          "readOnly": true
        },
        "anonAllowed": {
          "type": "boolean",
          "description": "Optional. Boolean flag that manages user access to the catalog item. When true, the catalog item has public visibility and can be viewed anonymously; otherwise, only registered users may view it. Note: when the parent portal is enrolled in the [audience management feature](https://cloud.google.com/apigee/docs/api-platform/publish/portal/portal-audience#enrolling_in_the_beta_release_of_the_audience_management_feature), and this flag is set to false, visibility is set to an indeterminate state and must be explicitly specified in the management UI (see [Manage the visibility of an API in your portal](https://cloud.google.com/apigee/docs/api-platform/publish/portal/publish-apis#visibility)). Additionally, when enrolled in the audience management feature, updates to this flag will be ignored as visibility permissions must be updated in the management UI."
        },
        "apiProductName": {
          "type": "string",
          "description": "Required. Immutable. The `name` field of the associated [API product](/apigee/docs/reference/apis/apigee/rest/v1/organizations.apiproducts). A portal may have only one catalog item associated with a given API product."
        },
        "graphqlSchemaDisplayName": {
          "description": "Optional. DEPRECATED: manage documentation through the `getDocumentation` and `updateDocumentation` methods",
          "deprecated": true,
          "type": "string"
        },
        "specId": {
          "deprecated": true,
          "description": "Optional. DEPRECATED: DO NOT USE",
          "type": "string"
        },
        "graphqlSchema": {
          "type": "string",
          "description": "Optional. DEPRECATED: manage documentation through the `getDocumentation` and `updateDocumentation` methods",
          "deprecated": true
        },
        "requireCallbackUrl": {
          "description": "Optional. Whether a callback URL is required when this catalog item's API product is enabled in a developer app. When true, a portal user will be required to input a URL when managing the app (this is typically used for the app's OAuth flow).",
          "type": "boolean"
        },
        "edgeAPIProductName": {
          "type": "string",
          "description": "Optional. Immutable. DEPRECATED: use the `apiProductName` field instead"
        },
        "imageUrl": {
          "description": "Optional. Location of the image used for the catalog item in the catalog. This can be either an image with an external URL or a file path for [image files stored in the portal](/apigee/docs/api-platform/publish/portal/portal-files\"), for example, `/files/book-tree.jpg`. When specifying the URL of an external image, the image won't be uploaded to your assets; additionally, loading the image in the integrated portal will be subject to its availability, which may be blocked or restricted by [content security policies](/apigee/docs/api-platform/publish/portal/csp). Max length of file path is 2,083 characters.",
          "type": "string"
        },
        "modified": {
          "description": "Output only. Time the catalog item was last modified in milliseconds since epoch.",
          "format": "int64",
          "readOnly": true,
          "type": "string"
        },
        "categoryIds": {
          "items": {
            "type": "string"
          },
          "description": "Optional. The IDs of the API categories to which this catalog item belongs.",
          "type": "array"
        },
        "published": {
          "type": "boolean",
          "description": "Optional. Denotes whether the catalog item is published to the portal or is in a draft state. When the parent portal is enrolled in the [audience management feature](https://cloud.google.com/apigee/docs/api-platform/publish/portal/portal-audience#enrolling_in_the_beta_release_of_the_audience_management_feature), the visibility can be set to public on creation by setting the anonAllowed flag to true or further managed in the management UI (see [Manage the visibility of an API in your portal](https://cloud.google.com/apigee/docs/api-platform/publish/portal/publish-apis#visibility)) before it can be visible to any users. If not enrolled in the audience management feature, the visibility is managed by the `anonAllowed` flag."
        },
        "siteId": {
          "readOnly": true,
          "description": "Output only. The ID of the parent portal.",
          "type": "string"
        },
        "description": {
          "description": "Optional. Description of the catalog item. Max length is 10,000 characters.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1ApiDoc",
      "type": "object"
    },
    "GoogleCloudApigeeV1RatePlan": {
      "properties": {
        "apiproduct": {
          "description": "Name of the API product that the rate plan is associated with.",
          "type": "string"
        },
        "revenueShareType": {
          "description": "Method used to calculate the revenue that is shared with developers.",
          "enum": [
            "REVENUE_SHARE_TYPE_UNSPECIFIED",
            "FIXED",
            "VOLUME_BANDED"
          ],
          "type": "string",
          "enumDescriptions": [
            "Revenue share type is not specified.",
            "Fixed percentage of the total revenue will be shared. The percentage to be shared can be configured by the API provider.",
            "Amount of revenue shared depends on the number of API calls. The API call volume ranges and the revenue share percentage for each volume can be configured by the API provider. **Note**: Not supported by Apigee at this time."
          ]
        },
        "revenueShareRates": {
          "description": "Details of the revenue sharing model.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1RevenueShareRange"
          }
        },
        "state": {
          "type": "string",
          "description": "Current state of the rate plan (draft or published).",
          "enumDescriptions": [
            "State of the rate plan is not specified.",
            "Rate plan is in draft mode and only visible to API providers.",
            "Rate plan is published and will become visible to developers for the configured duration (between `startTime` and `endTime`)."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "DRAFT",
            "PUBLISHED"
          ]
        },
        "billingPeriod": {
          "type": "string",
          "description": "Frequency at which the customer will be billed.",
          "enum": [
            "BILLING_PERIOD_UNSPECIFIED",
            "WEEKLY",
            "MONTHLY"
          ],
          "enumDescriptions": [
            "Billing period not specified.",
            "Weekly billing period. **Note**: Not supported by Apigee at this time.",
            "Monthly billing period."
          ]
        },
        "consumptionPricingRates": {
          "items": {
            "$ref": "GoogleCloudApigeeV1RateRange"
          },
          "description": "API call volume ranges and the fees charged when the total number of API calls is within a given range. The method used to calculate the final fee depends on the selected pricing model. For example, if the pricing model is `BANDED` and the ranges are defined as follows: ``` { \"start\": 1, \"end\": 100, \"fee\": 2 }, { \"start\": 101, \"end\": 200, \"fee\": 1.50 }, { \"start\": 201, \"end\": 0, \"fee\": 1 }, } ``` Then the following fees would be charged based on the total number of API calls (assuming the currency selected is `USD`): * 50 calls cost 50 x $2 = $100 * 150 calls cost 100 x $2 + 50 x $1.5 = $275 * 250 calls cost 100 x $2 + 100 x $1.5 + 50 x $1 = $400 * 500 calls cost 100 x $2 + 100 x $1.5 + 300 x $1 = $650",
          "type": "array"
        },
        "lastModifiedAt": {
          "readOnly": true,
          "type": "string",
          "format": "int64",
          "description": "Output only. Time the rate plan was last modified in milliseconds since epoch."
        },
        "startTime": {
          "type": "string",
          "description": "Time when the rate plan becomes active in milliseconds since epoch.",
          "format": "int64"
        },
        "setupFee": {
          "$ref": "GoogleTypeMoney",
          "description": "Initial, one-time fee paid when purchasing the API product."
        },
        "name": {
          "description": "Output only. Name of the rate plan.",
          "type": "string",
          "readOnly": true
        },
        "endTime": {
          "format": "int64",
          "type": "string",
          "description": "Time when the rate plan will expire in milliseconds since epoch. Set to 0 or `null` to indicate that the rate plan should never expire."
        },
        "displayName": {
          "description": "Display name of the rate plan.",
          "type": "string"
        },
        "paymentFundingModel": {
          "deprecated": true,
          "enumDescriptions": [
            "Billing account type not specified.",
            "Prepaid billing account type. Developer pays in advance for the use of your API products. Funds are deducted from their prepaid account balance. **Note**: Not supported by Apigee at this time.",
            "Postpaid billing account type. Developer is billed through an invoice after using your API products."
          ],
          "type": "string",
          "description": "DEPRECATED: This field is no longer supported and will eventually be removed when Apigee Hybrid 1.5/1.6 is no longer supported. Instead, use the `billingType` field inside `DeveloperMonetizationConfig` resource. Flag that specifies the billing account type, prepaid or postpaid.",
          "enum": [
            "PAYMENT_FUNDING_MODEL_UNSPECIFIED",
            "PREPAID",
            "POSTPAID"
          ]
        },
        "consumptionPricingType": {
          "type": "string",
          "enum": [
            "CONSUMPTION_PRICING_TYPE_UNSPECIFIED",
            "FIXED_PER_UNIT",
            "BANDED",
            "TIERED",
            "STAIRSTEP"
          ],
          "description": "Pricing model used for consumption-based charges.",
          "enumDescriptions": [
            "Pricing model not specified. This is the default.",
            "Fixed rate charged for each API call.",
            "Variable rate charged for each API call based on price tiers. Example: * 1-100 calls cost $2 per call * 101-200 calls cost $1.50 per call * 201-300 calls cost $1 per call * Total price for 50 calls: 50 x $2 = $100 * Total price for 150 calls: 100 x $2 + 50 x $1.5 = $275 * Total price for 250 calls: 100 x $2 + 100 x $1.5 + 50 x $1 = $400.",
            "**Note**: Not supported by Apigee at this time.",
            "**Note**: Not supported by Apigee at this time."
          ]
        },
        "createdAt": {
          "format": "int64",
          "type": "string",
          "readOnly": true,
          "description": "Output only. Time that the rate plan was created in milliseconds since epoch."
        },
        "currencyCode": {
          "description": "Currency to be used for billing. Consists of a three-letter code as defined by the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) standard.",
          "type": "string"
        },
        "description": {
          "description": "Description of the rate plan.",
          "type": "string"
        },
        "fixedRecurringFee": {
          "$ref": "GoogleTypeMoney",
          "description": "Fixed amount that is charged at a defined interval and billed in advance of use of the API product. The fee will be prorated for the first billing period."
        },
        "fixedFeeFrequency": {
          "type": "integer",
          "description": "Frequency at which the fixed fee is charged.",
          "format": "int32"
        }
      },
      "type": "object",
      "description": "Rate plan details.",
      "id": "GoogleCloudApigeeV1RatePlan"
    },
    "GoogleCloudApigeeV1GetAsyncQueryResultUrlResponseURLInfo": {
      "id": "GoogleCloudApigeeV1GetAsyncQueryResultUrlResponseURLInfo",
      "description": "A Signed URL and the relevant metadata associated with it.",
      "properties": {
        "md5": {
          "description": "The MD5 Hash of the JSON data",
          "type": "string"
        },
        "sizeBytes": {
          "format": "int64",
          "description": "The size of the returned file in bytes",
          "type": "string"
        },
        "uri": {
          "type": "string",
          "description": "The signed URL of the JSON data. Will be of the form `https://storage.googleapis.com/example-bucket/cat.jpeg?X-Goog-Algorithm= GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount .com%2F20181026%2Fus-central1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T18 1309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host&X-Goog-Signature=247a2aa45f16 9edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa849 6def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dc c1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c2058 0e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a 66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823 a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b13344703 2ea7abedc098d2eb14a7`"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1SecurityActionAllow": {
      "type": "object",
      "id": "GoogleCloudApigeeV1SecurityActionAllow",
      "description": "Message that should be set in case of an Allow Action. This does not have any fields.",
      "properties": {}
    },
    "GoogleCloudApigeeV1DeploymentChangeReportRoutingConflict": {
      "type": "object",
      "description": "Describes a routing conflict that may cause a deployment not to receive traffic at some base path.",
      "properties": {
        "description": {
          "description": "Human-readable description of this conflict.",
          "type": "string"
        },
        "environmentGroup": {
          "description": "Name of the environment group in which this conflict exists.",
          "type": "string"
        },
        "conflictingDeployment": {
          "$ref": "GoogleCloudApigeeV1DeploymentChangeReportRoutingDeployment",
          "description": "Existing base path/deployment causing the conflict."
        }
      },
      "id": "GoogleCloudApigeeV1DeploymentChangeReportRoutingConflict"
    },
    "GoogleCloudApigeeV1RuntimeSpecGenerationAddonConfig": {
      "type": "object",
      "properties": {
        "enabledUntil": {
          "type": "string",
          "description": "ISO-8601 timestamp until which Spec Generation remains active (e.g. \"2026-12-31T23:59:59Z\"). Empty string is the canonical \"not configured\" sentinel and MUST be treated by the consumer as \"expired\" (short-circuit before parsing). Default: empty string."
        },
        "samplingRate": {
          "format": "double",
          "description": "Fraction of eligible transactions to capture, in [0.0, 1.0]. The consumer enforces an internal upper-bound clamp independently of this field. Default: 0.0 (omitted from JSON per proto3 default-scalar-omission; the consumer's field initializer supplies the effective 0.01 fallback).",
          "type": "number"
        },
        "enabled": {
          "description": "Whether the Spec Generation add-on is active for this environment. Default: false.",
          "type": "boolean"
        },
        "rawObservationsPubsubTopic": {
          "type": "string",
          "description": "Full Pub/Sub topic path in the Apigee Runtime Tenant Project where the message processor publishes captured RawObservation messages. Format: projects/{project}/topics/{topic}. Empty string is the \"not configured\" sentinel; the consumer short-circuits publishing when empty. Default: empty string."
        },
        "apiObservationsPubsubTopic": {
          "type": "string",
          "description": "Full Pub/Sub topic path in the Apigee Runtime Tenant Project where the Schema Inferring Engine publishes inferred ApiObservation messages. Format: projects/{project}/topics/{topic}. Same sentinel semantics as raw_observations_pubsub_topic. Default: empty string."
        }
      },
      "description": "Runtime configuration for the Spec Generation add-on. All fields are proto3 primitives (bool, string, double) rather than google.protobuf.*Value wrappers because the runtime consumer deserializes the JSON via Gson field reflection with no registered type adapters. Wrapper types would serialize as JSON objects/null that Gson cannot bind to Java primitive fields.",
      "id": "GoogleCloudApigeeV1RuntimeSpecGenerationAddonConfig"
    },
    "GoogleCloudApigeeV1OperationConfig": {
      "description": "Binds the resources in an API proxy or remote service with the allowed REST methods and associated quota enforcement.",
      "id": "GoogleCloudApigeeV1OperationConfig",
      "properties": {
        "apiSource": {
          "description": "Required. Name of the API proxy or remote service with which the resources, methods, and quota are associated.",
          "type": "string"
        },
        "operations": {
          "description": "List of resource/method pairs for the API proxy or remote service to which quota will applied. **Note**: Currently, you can specify only a single resource/method pair. The call will fail if more than one resource/method pair is provided.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Operation"
          }
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          },
          "description": "Custom attributes associated with the operation."
        },
        "quota": {
          "$ref": "GoogleCloudApigeeV1Quota",
          "description": "Quota parameters to be enforced for the resources, methods, and API source combination. If none are specified, quota enforcement will not be done."
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1BatchUpdateSecurityIncidentsResponse": {
      "description": "Response for BatchUpdateSecurityIncident.",
      "id": "GoogleCloudApigeeV1BatchUpdateSecurityIncidentsResponse",
      "properties": {
        "securityIncidents": {
          "readOnly": true,
          "type": "array",
          "description": "Output only. Updated security incidents",
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityIncident"
          }
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1SecurityProfileV2": {
      "properties": {
        "googleDefined": {
          "description": "Output only. Whether the security profile is google defined.",
          "type": "boolean",
          "readOnly": true
        },
        "createTime": {
          "readOnly": true,
          "description": "Output only. The time of the security profile creation.",
          "type": "string",
          "format": "google-datetime"
        },
        "description": {
          "description": "Optional. The description of the security profile.",
          "type": "string"
        },
        "profileAssessmentConfigs": {
          "additionalProperties": {
            "$ref": "GoogleCloudApigeeV1SecurityProfileV2ProfileAssessmentConfig"
          },
          "type": "object",
          "description": "Required. The configuration for each assessment in this profile. Key is the name/id of the assessment."
        },
        "updateTime": {
          "format": "google-datetime",
          "readOnly": true,
          "description": "Output only. The time of the security profile update.",
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "Identifier. Name of the security profile v2 resource. Format: organizations/{org}/securityProfilesV2/{profile}"
        },
        "riskAssessmentType": {
          "enumDescriptions": [
            "Risk assessment type is not specified.",
            "Risk assessment type is Apigee.",
            "Risk assessment type is API Hub."
          ],
          "type": "string",
          "description": "Optional. The risk assessment type of the security profile. Defaults to ADVANCED_API_SECURITY.",
          "enum": [
            "RISK_ASSESSMENT_TYPE_UNSPECIFIED",
            "APIGEE",
            "API_HUB"
          ]
        }
      },
      "id": "GoogleCloudApigeeV1SecurityProfileV2",
      "type": "object",
      "description": "Security profile for risk assessment version 2."
    },
    "GoogleCloudApigeeV1OptimizedStatsResponse": {
      "properties": {
        "TimeUnit": {
          "description": "List of time unit values. Time unit refers to an epoch timestamp value.",
          "type": "array",
          "items": {
            "format": "int64",
            "type": "string"
          }
        },
        "metaData": {
          "$ref": "GoogleCloudApigeeV1Metadata",
          "description": "Metadata information about the query executed."
        },
        "resultTruncated": {
          "type": "boolean",
          "description": "Boolean flag that indicates whether the results were truncated based on the limit parameter."
        },
        "stats": {
          "$ref": "GoogleCloudApigeeV1OptimizedStatsNode",
          "description": "`stats` results."
        }
      },
      "type": "object",
      "description": "Encapsulates a response format for JavaScript Optimized Scenario.",
      "id": "GoogleCloudApigeeV1OptimizedStatsResponse"
    },
    "GoogleCloudApigeeV1Export": {
      "type": "object",
      "description": "Details of an export job.",
      "properties": {
        "datastoreName": {
          "type": "string",
          "description": "Name of the datastore that is the destination of the export job [datastore]"
        },
        "state": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Status of the export job. Valid values include `enqueued`, `running`, `completed`, and `failed`."
        },
        "description": {
          "type": "string",
          "description": "Description of the export job."
        },
        "created": {
          "type": "string",
          "description": "Output only. Time the export job was created.",
          "readOnly": true
        },
        "name": {
          "description": "Display name of the export job.",
          "type": "string"
        },
        "error": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Error is set when export fails"
        },
        "executionTime": {
          "description": "Output only. Execution time for this export job. If the job is still in progress, it will be set to the amount of time that has elapsed since`created`, in seconds. Else, it will set to (`updated` - `created`), in seconds.",
          "readOnly": true,
          "type": "string"
        },
        "updated": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Time the export job was last updated."
        },
        "self": {
          "description": "Output only. Self link of the export job. A URI that can be used to retrieve the status of an export job. Example: `/organizations/myorg/environments/myenv/analytics/exports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd`",
          "type": "string",
          "readOnly": true
        }
      },
      "id": "GoogleCloudApigeeV1Export"
    },
    "GoogleCloudApigeeV1SchemaSchemaProperty": {
      "properties": {
        "type": {
          "description": "Data type of the field.",
          "type": "string"
        },
        "custom": {
          "type": "string",
          "description": "Flag that specifies whether the field is standard in the dataset or a custom field created by the customer. `true` indicates that it is a custom field."
        },
        "createTime": {
          "description": "Time the field was created in RFC3339 string form. For example: `2016-02-26T10:23:09.592Z`.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1SchemaSchemaProperty",
      "type": "object",
      "description": "Properties for the schema field."
    },
    "GoogleCloudApigeeV1Access": {
      "type": "object",
      "id": "GoogleCloudApigeeV1Access",
      "properties": {
        "Set": {
          "$ref": "GoogleCloudApigeeV1AccessSet"
        },
        "Remove": {
          "$ref": "GoogleCloudApigeeV1AccessRemove"
        },
        "Get": {
          "$ref": "GoogleCloudApigeeV1AccessGet"
        }
      }
    },
    "GoogleCloudApigeeV1ListEnvironmentGroupsResponse": {
      "type": "object",
      "description": "Response for ListEnvironmentGroups.",
      "id": "GoogleCloudApigeeV1ListEnvironmentGroupsResponse",
      "properties": {
        "nextPageToken": {
          "description": "Page token that you can include in a ListEnvironmentGroups request to retrieve the next page. If omitted, no subsequent pages exist.",
          "type": "string"
        },
        "environmentGroups": {
          "description": "EnvironmentGroups in the specified organization.",
          "items": {
            "$ref": "GoogleCloudApigeeV1EnvironmentGroup"
          },
          "type": "array"
        }
      }
    },
    "GoogleCloudApigeeV1RuntimeTraceConfigOtelMtlsConfig": {
      "properties": {
        "keyAliasReference": {
          "$ref": "GoogleCloudApigeeV1KeyAliasReference",
          "description": "Reference name and alias-id pair. Set when the customer supplied a `ref://{referenceID}` URI in `TraceConfig.OtelMtlsConfig.key_store`. Resolved via the References catalog the same way as `TlsInfoConfig.key_alias_reference` in target-server TLS. Reuses the top-level `KeyAliasReference` message defined for `TlsInfoConfig` above; no new message."
        },
        "keyAlias": {
          "type": "string",
          "description": "Full alias resource name of the client-side key/cert alias. Format: `organizations/{org}/environments/{env}/keystores/{keystore}/aliases/{alias}` Set when the customer supplied a plain keystore ID in `TraceConfig.OtelMtlsConfig.key_store`."
        },
        "trustStore": {
          "description": "Full resource name of the truststore holding the CA(s) that signed the OTel Collector's server certificate. Either a keystore or a reference resource name, mirroring `TlsInfoConfig.trust_store` above: `organizations/{org}/environments/{env}/keystores/{keystore}` `organizations/{org}/environments/{env}/references/{reference}`",
          "type": "string"
        }
      },
      "description": "Runtime-side view of `TraceConfig.OtelMtlsConfig` for the outbound OTel Collector mTLS connection. Shape mirrors `TlsInfoConfig` (in this same file, above) exactly. The oneof discriminates between a direct keystore reference and a `ref://`-indirected reference; both are surfaced on the wire without flattening. The referenced keystore must also appear in `EnvironmentConfig.keystores[]` so the underlying alias bytes are available at runtime. Referential integrity is enforced at trace-config update time: any PATCH that references a keystore not already present is rejected in the same transaction that would persist the update, and keystore/alias/reference deletion is blocked while a trace-config references it.",
      "type": "object",
      "id": "GoogleCloudApigeeV1RuntimeTraceConfigOtelMtlsConfig"
    },
    "GoogleCloudApigeeV1EnvironmentClientIPResolutionConfig": {
      "id": "GoogleCloudApigeeV1EnvironmentClientIPResolutionConfig",
      "type": "object",
      "description": "Configuration for resolving the client ip.",
      "properties": {
        "headerIndexAlgorithm": {
          "description": "Resolves the client ip based on a custom header.",
          "$ref": "GoogleCloudApigeeV1EnvironmentClientIPResolutionConfigHeaderIndexAlgorithm"
        }
      }
    },
    "GoogleCloudApigeeV1ApiProxy": {
      "type": "object",
      "properties": {
        "latestRevisionId": {
          "type": "string",
          "description": "Output only. The id of the most recently created revision for this api proxy.",
          "readOnly": true
        },
        "space": {
          "description": "Optional. The id of the space this proxy is associated with. Any IAM policies applied to the space will control access to this proxy. To learn how Spaces can be used to manage resources, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview).",
          "type": "string"
        },
        "metaData": {
          "readOnly": true,
          "$ref": "GoogleCloudApigeeV1EntityMetadata",
          "description": "Output only. Metadata describing the API proxy."
        },
        "labels": {
          "type": "object",
          "description": "User labels applied to this API Proxy.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "name": {
          "type": "string",
          "description": "Output only. Name of the API proxy.",
          "readOnly": true
        },
        "apiProxyType": {
          "enum": [
            "API_PROXY_TYPE_UNSPECIFIED",
            "PROGRAMMABLE",
            "CONFIGURABLE"
          ],
          "description": "Output only. The type of the API proxy.",
          "type": "string",
          "enumDescriptions": [
            "API proxy type not specified.",
            "Programmable API Proxies enable you to develop APIs with highly flexible behavior using bundled policy configuration and one or more programming languages to describe complex sequential and/or conditional flows of logic.",
            "Configurable API Proxies enable you to develop efficient APIs using simple configuration while complex execution control flow logic is handled by Apigee. This type only works with the ARCHIVE deployment type and cannot be combined with the PROXY deployment type."
          ],
          "readOnly": true
        },
        "revision": {
          "readOnly": true,
          "items": {
            "type": "string"
          },
          "description": "Output only. List of revisions defined for the API proxy.",
          "type": "array"
        },
        "readOnly": {
          "description": "Output only. Whether this proxy is read-only. A read-only proxy cannot have new revisions created through calls to CreateApiProxyRevision. A proxy is read-only if it was generated by an archive.",
          "readOnly": true,
          "type": "boolean"
        }
      },
      "id": "GoogleCloudApigeeV1ApiProxy",
      "description": "Metadata describing the API proxy"
    },
    "GoogleCloudApigeeV1DocumentationFile": {
      "type": "object",
      "description": "Documentation file contents for a catalog item.",
      "id": "GoogleCloudApigeeV1DocumentationFile",
      "properties": {
        "contents": {
          "format": "byte",
          "type": "string",
          "description": "Required. The file contents. The max size is 4 MB."
        },
        "displayName": {
          "type": "string",
          "description": "Required. A display name for the file, shown in the management UI. Max length is 255 characters."
        }
      }
    },
    "GoogleCloudApigeeV1ListInstanceAttachmentsResponse": {
      "description": "Response for ListInstanceAttachments.",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "Page token that you can include in a ListInstanceAttachments request to retrieve the next page of content. If omitted, no subsequent pages exist.",
          "type": "string"
        },
        "attachments": {
          "description": "Attachments for the instance.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1InstanceAttachment"
          }
        }
      },
      "id": "GoogleCloudApigeeV1ListInstanceAttachmentsResponse"
    },
    "GoogleCloudApigeeV1Organization": {
      "properties": {
        "apiConsumerDataEncryptionKeyName": {
          "type": "string",
          "description": "Optional. Cloud KMS key name used for encrypting API consumer data. If not specified or [BillingType](#BillingType) is `EVALUATION`, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`"
        },
        "state": {
          "type": "string",
          "readOnly": true,
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "ACTIVE",
            "DELETING",
            "UPDATING"
          ],
          "description": "Output only. State of the organization. Values other than ACTIVE means the resource is not ready to use.",
          "enumDescriptions": [
            "Resource is in an unspecified state.",
            "Resource is being created.",
            "Resource is provisioned and ready to use.",
            "The resource is being deleted.",
            "The resource is being updated."
          ]
        },
        "controlPlaneEncryptionKeyName": {
          "description": "Optional. Cloud KMS key name used for encrypting control plane data that is stored in a multi region. Only used for the data residency region \"US\" or \"EU\". If not specified or [BillingType](#BillingType) is `EVALUATION`, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`",
          "type": "string"
        },
        "apigeeProjectId": {
          "type": "string",
          "description": "Output only. Apigee Project ID associated with the organization. Use this project to allowlist Apigee in the Service Attachment when using private service connect with Apigee.",
          "readOnly": true
        },
        "billingType": {
          "enum": [
            "BILLING_TYPE_UNSPECIFIED",
            "SUBSCRIPTION",
            "EVALUATION",
            "PAYG"
          ],
          "description": "Optional. Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing).",
          "type": "string",
          "enumDescriptions": [
            "Billing type not specified.",
            "A pre-paid subscription to Apigee.",
            "Free and limited access to Apigee for evaluation purposes only.",
            "Access to Apigee using a Pay-As-You-Go plan."
          ]
        },
        "runtimeDatabaseEncryptionKeyName": {
          "description": "Optional. Cloud KMS key name used for encrypting the data that is stored and replicated across runtime instances. Update is not allowed after the organization is created. If not specified or [RuntimeType](#RuntimeType) is `TRIAL`, a Google-Managed encryption key will be used. For example: \"projects/foo/locations/us/keyRings/bar/cryptoKeys/baz\". **Note:** Not supported for Apigee hybrid.",
          "type": "string"
        },
        "projectId": {
          "description": "Output only. Project ID associated with the Apigee organization.",
          "type": "string",
          "readOnly": true
        },
        "lastModifiedAt": {
          "readOnly": true,
          "description": "Output only. Time that the Apigee organization was last modified in milliseconds since epoch.",
          "format": "int64",
          "type": "string"
        },
        "addonsConfig": {
          "description": "Optional. Addon configurations of the Apigee organization.",
          "$ref": "GoogleCloudApigeeV1AddonsConfig"
        },
        "apiConsumerDataLocation": {
          "description": "Optional. This field is needed only for customers using non-default data residency regions. Apigee stores some control plane data only in single region. This field determines which single region Apigee should use. For example: \"us-west1\" when control plane is in US or \"europe-west2\" when control plane is in EU.",
          "type": "string"
        },
        "createdAt": {
          "description": "Output only. Time that the Apigee organization was created in milliseconds since epoch.",
          "type": "string",
          "format": "int64",
          "readOnly": true
        },
        "caCertificate": {
          "type": "string",
          "deprecated": true,
          "readOnly": true,
          "description": "Output only. Deprecated: Use `ca_certificates` instead. Base64-encoded public certificate for the root CA of the Apigee organization. Valid only when [RuntimeType](#RuntimeType) is `CLOUD`.",
          "format": "byte"
        },
        "type": {
          "description": "Not used by Apigee.",
          "enumDescriptions": [
            "Subscription type not specified.",
            "Subscription to Apigee is free, limited, and used for evaluation purposes only.",
            "Full subscription to Apigee has been purchased. See [Apigee pricing](https://cloud.google.com/apigee/pricing/).",
            "For internal users only."
          ],
          "enum": [
            "TYPE_UNSPECIFIED",
            "TYPE_TRIAL",
            "TYPE_PAID",
            "TYPE_INTERNAL"
          ],
          "type": "string"
        },
        "subscriptionType": {
          "readOnly": true,
          "deprecated": true,
          "enum": [
            "SUBSCRIPTION_TYPE_UNSPECIFIED",
            "PAID",
            "TRIAL"
          ],
          "type": "string",
          "description": "Output only. DEPRECATED: This will eventually be replaced by BillingType. Subscription type of the Apigee organization. Valid values include trial (free, limited, and for evaluation purposes only) or paid (full subscription has been purchased). See [Apigee pricing](https://cloud.google.com/apigee/pricing/).",
          "enumDescriptions": [
            "Subscription type not specified.",
            "Full subscription to Apigee has been purchased.",
            "Subscription to Apigee is free, limited, and used for evaluation purposes only."
          ]
        },
        "displayName": {
          "description": "Optional. Display name for the Apigee organization. Unused, but reserved for future use.",
          "type": "string"
        },
        "properties": {
          "description": "Optional. Properties defined in the Apigee organization profile.",
          "$ref": "GoogleCloudApigeeV1Properties"
        },
        "analyticsRegion": {
          "deprecated": true,
          "type": "string",
          "description": "Required. DEPRECATED: This field will eventually be deprecated and replaced with a differently-named field. Primary Google Cloud region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org)."
        },
        "subscriptionPlan": {
          "enumDescriptions": [
            "Subscription plan not specified.",
            "Traditional subscription plan.",
            "New subscription plan that provides standard proxy and scaled proxy implementation."
          ],
          "description": "Output only. Subscription plan that the customer has purchased. Output only.",
          "readOnly": true,
          "type": "string",
          "enum": [
            "SUBSCRIPTION_PLAN_UNSPECIFIED",
            "SUBSCRIPTION_2021",
            "SUBSCRIPTION_2024"
          ]
        },
        "authorizedNetwork": {
          "description": "Optional. Compute Engine network used for Service Networking to be peered with Apigee runtime instances. See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). Valid only when [RuntimeType](#RuntimeType) is set to `CLOUD`. The value must be set before the creation of a runtime instance and can be updated only when there are no runtime instances. For example: `default`. When changing authorizedNetwork, you must reconfigure VPC peering. After VPC peering with previous network is deleted, [run the following command](https://cloud.google.com/sdk/gcloud/reference/services/vpc-peerings/delete): `gcloud services vpc-peerings delete --network=NETWORK`, where `NETWORK` is the name of the previous network. This will delete the previous Service Networking. Otherwise, you will get the following error: `The resource 'projects/...-tp' is already linked to another shared VPC host 'projects/...-tp`. Apigee also supports shared VPC (that is, the host network project is not the same as the one that is peering with Apigee). See [Shared VPC overview](https://cloud.google.com/vpc/docs/shared-vpc). To use a shared VPC network, use the following format: `projects/{host-project-id}/{region}/networks/{network-name}`. For example: `projects/my-sharedvpc-host/global/networks/mynetwork` **Note:** Not supported for Apigee hybrid.",
          "type": "string"
        },
        "caCertificates": {
          "readOnly": true,
          "items": {
            "format": "byte",
            "type": "string"
          },
          "description": "Output only. Base64-encoded public certificates for the root CA of the Apigee organization. Valid only when [RuntimeType](#RuntimeType) is `CLOUD`. Multiple certificates are used to support certificate rotation.",
          "type": "array"
        },
        "runtimeType": {
          "type": "string",
          "description": "Required. Runtime type of the Apigee organization based on the Apigee subscription purchased.",
          "enum": [
            "RUNTIME_TYPE_UNSPECIFIED",
            "CLOUD",
            "HYBRID"
          ],
          "enumDescriptions": [
            "Runtime type not specified.",
            "Google-managed Apigee runtime.",
            "User-managed Apigee hybrid runtime."
          ]
        },
        "customerName": {
          "description": "Not used by Apigee.",
          "type": "string"
        },
        "networkEgressRestricted": {
          "type": "boolean",
          "description": "Optional. Flag that specifies if internet egress is restricted for VPC Service Controls. Valid only when runtime_type is `CLOUD` and disable_vpc_peering is `true`."
        },
        "expiresAt": {
          "readOnly": true,
          "format": "int64",
          "description": "Output only. Time that the Apigee organization is scheduled for deletion.",
          "type": "string"
        },
        "disableVpcPeering": {
          "description": "Optional. Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Valid only when RuntimeType is set to CLOUD. Required if an authorizedNetwork on the consumer project is not provided, in which case the flag should be set to true. The value must be set before the creation of any Apigee runtime instance and can be updated only when there are no runtime instances. **Note:** Apigee will be deprecating the vpc peering model that requires you to provide 'authorizedNetwork', by making the non-peering model as the default way of provisioning Apigee organization in future. So, this will be a temporary flag to enable the transition. Not supported for Apigee hybrid.",
          "type": "boolean"
        },
        "portalDisabled": {
          "description": "Optional. Configuration for the Portals settings.",
          "type": "boolean"
        },
        "environments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "readOnly": true,
          "description": "Output only. List of environments in the Apigee organization."
        },
        "description": {
          "description": "Optional. Description of the Apigee organization.",
          "type": "string"
        },
        "name": {
          "description": "Output only. Name of the Apigee organization.",
          "readOnly": true,
          "type": "string"
        },
        "attributes": {
          "items": {
            "type": "string"
          },
          "description": "Not used by Apigee.",
          "type": "array"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1Organization"
    },
    "GoogleCloudApigeeV1Stats": {
      "description": "Encapsulates a `stats` response.",
      "type": "object",
      "properties": {
        "hosts": {
          "items": {
            "$ref": "GoogleCloudApigeeV1StatsHostStats"
          },
          "type": "array",
          "description": "List of query results grouped by host."
        },
        "metaData": {
          "$ref": "GoogleCloudApigeeV1Metadata",
          "description": "Metadata information."
        },
        "environments": {
          "description": "List of query results on the environment level.",
          "items": {
            "$ref": "GoogleCloudApigeeV1StatsEnvironmentStats"
          },
          "type": "array"
        }
      },
      "id": "GoogleCloudApigeeV1Stats"
    },
    "GoogleIamV1Policy": {
      "properties": {
        "version": {
          "format": "int32",
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "auditConfigs": {
          "description": "Specifies cloud audit logging configuration for this policy.",
          "type": "array",
          "items": {
            "$ref": "GoogleIamV1AuditConfig"
          }
        },
        "etag": {
          "format": "byte",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
          "type": "string"
        },
        "bindings": {
          "items": {
            "$ref": "GoogleIamV1Binding"
          },
          "type": "array",
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        }
      },
      "description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time \u003c timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time \u003c timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
      "type": "object",
      "id": "GoogleIamV1Policy"
    },
    "GoogleCloudApigeeV1ApiSecurityRuntimeConfig": {
      "properties": {
        "location": {
          "items": {
            "type": "string"
          },
          "description": "A list of up to 5 Cloud Storage Blobs that contain SecurityActions.",
          "type": "array"
        },
        "uid": {
          "type": "string",
          "description": "Unique ID for the API Security Runtime configuration. The ID will only change if the environment is deleted and recreated."
        },
        "name": {
          "description": "Name of the environment API Security Runtime configuration resource. Format: `organizations/{org}/environments/{env}/apiSecurityRuntimeConfig`",
          "type": "string"
        },
        "revisionId": {
          "format": "int64",
          "description": "Revision ID of the API Security Runtime configuration. The higher the value, the more recently the configuration was deployed.",
          "type": "string"
        },
        "updateTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "Time that the API Security Runtime configuration was updated."
        }
      },
      "type": "object",
      "description": "Response for GetApiSecurityRuntimeConfig[EnvironmentService.GetApiSecurityRuntimeConfig].",
      "id": "GoogleCloudApigeeV1ApiSecurityRuntimeConfig"
    },
    "GoogleCloudApigeeV1OrganizationProjectMapping": {
      "id": "GoogleCloudApigeeV1OrganizationProjectMapping",
      "properties": {
        "projectIds": {
          "items": {
            "type": "string"
          },
          "deprecated": true,
          "type": "array",
          "description": "DEPRECATED: Use `project_id`. An Apigee Organization is mapped to a single project."
        },
        "location": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The Google Cloud region where control plane data is located. For more information, see https://cloud.google.com/about/locations/."
        },
        "projectId": {
          "description": "Google Cloud project associated with the Apigee organization",
          "type": "string"
        },
        "organization": {
          "description": "Name of the Apigee organization.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1StatsHostStats": {
      "properties": {
        "dimensions": {
          "description": "List of metrics grouped under dimensions.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1DimensionMetric"
          }
        },
        "metrics": {
          "items": {
            "$ref": "GoogleCloudApigeeV1Metric"
          },
          "description": "In the final response, only one of the following fields will be present based on the dimensions provided. If no dimensions are provided, then only the top-level metrics are provided. If dimensions are included, then there will be a top-level dimensions field under hostnames which will contain metrics values and the dimension name. Example: ``` \"hosts\": [ { \"dimensions\": [ { \"metrics\": [ { \"name\": \"sum(message_count)\", \"values\": [ \"2.14049521E8\" ] } ], \"name\": \"nit_proxy\" } ], \"name\": \"example.com\" } ]``` OR ```\"hosts\": [ { \"metrics\": [ { \"name\": \"sum(message_count)\", \"values\": [ \"2.19026331E8\" ] } ], \"name\": \"example.com\" } ]``` List of metric values.",
          "type": "array"
        },
        "name": {
          "description": "Hostname used in query.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1StatsHostStats",
      "description": "Encapsulates the hostname wrapper: ``` \"hosts\": [ { \"metrics\": [ { \"name\": \"sum(message_count)\", \"values\": [ \"2.52056245E8\" ] } ], \"name\": \"example.com\" } ]```"
    },
    "GoogleCloudApigeeV1ApiDocDocumentationResponse": {
      "description": "The catalog item documentation wrapped with response status, error_code, etc.",
      "id": "GoogleCloudApigeeV1ApiDocDocumentationResponse",
      "type": "object",
      "properties": {
        "requestId": {
          "type": "string",
          "description": "Output only. Unique ID of the request.",
          "readOnly": true
        },
        "status": {
          "description": "Output only. Status of the operation.",
          "readOnly": true,
          "type": "string"
        },
        "data": {
          "$ref": "GoogleCloudApigeeV1ApiDocDocumentation",
          "readOnly": true,
          "description": "Output only. The documentation resource."
        },
        "message": {
          "description": "Output only. Description of the operation.",
          "type": "string",
          "readOnly": true
        },
        "errorCode": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Unique error code for the request, if any."
        }
      }
    },
    "GoogleCloudApigeeV1SecurityAssessmentResultScoringResultAssessmentRecommendationRecommendationLink": {
      "type": "object",
      "description": "The format for a link in the recommendation.",
      "properties": {
        "uri": {
          "description": "The link itself.",
          "type": "string"
        },
        "text": {
          "type": "string",
          "description": "The text of the url. (ie: \"Learn more\")"
        }
      },
      "id": "GoogleCloudApigeeV1SecurityAssessmentResultScoringResultAssessmentRecommendationRecommendationLink"
    },
    "GoogleCloudApigeeV1RuntimeApiSecurityConfig": {
      "description": "Runtime configuration for the API Security add-on.",
      "properties": {
        "enabled": {
          "description": "If the API Security is enabled or not.",
          "type": "boolean"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1RuntimeApiSecurityConfig"
    },
    "GoogleCloudApigeeV1UpdateError": {
      "properties": {
        "message": {
          "description": "User-friendly error message.",
          "type": "string"
        },
        "type": {
          "type": "string",
          "description": "A string that uniquely identifies the type of error. This provides a more reliable means to deduplicate errors across revisions and instances."
        },
        "code": {
          "enum": [
            "OK",
            "CANCELLED",
            "UNKNOWN",
            "INVALID_ARGUMENT",
            "DEADLINE_EXCEEDED",
            "NOT_FOUND",
            "ALREADY_EXISTS",
            "PERMISSION_DENIED",
            "UNAUTHENTICATED",
            "RESOURCE_EXHAUSTED",
            "FAILED_PRECONDITION",
            "ABORTED",
            "OUT_OF_RANGE",
            "UNIMPLEMENTED",
            "INTERNAL",
            "UNAVAILABLE",
            "DATA_LOSS"
          ],
          "type": "string",
          "enumDescriptions": [
            "Not an error; returned on success. HTTP Mapping: 200 OK",
            "The operation was cancelled, typically by the caller. HTTP Mapping: 499 Client Closed Request",
            "Unknown error. For example, this error may be returned when a `Status` value received from another address space belongs to an error space that is not known in this address space. Also errors raised by APIs that do not return enough error information may be converted to this error. HTTP Mapping: 500 Internal Server Error",
            "The client specified an invalid argument. Note that this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments that are problematic regardless of the state of the system (e.g., a malformed file name). HTTP Mapping: 400 Bad Request",
            "The deadline expired before the operation could complete. For operations that change the state of the system, this error may be returned even if the operation has completed successfully. For example, a successful response from a server could have been delayed long enough for the deadline to expire. HTTP Mapping: 504 Gateway Timeout",
            "Some requested entity (e.g., file or directory) was not found. Note to server developers: if a request is denied for an entire class of users, such as gradual feature rollout or undocumented allowlist, `NOT_FOUND` may be used. If a request is denied for some users within a class of users, such as user-based access control, `PERMISSION_DENIED` must be used. HTTP Mapping: 404 Not Found",
            "The entity that a client attempted to create (e.g., file or directory) already exists. HTTP Mapping: 409 Conflict",
            "The caller does not have permission to execute the specified operation. `PERMISSION_DENIED` must not be used for rejections caused by exhausting some resource (use `RESOURCE_EXHAUSTED` instead for those errors). `PERMISSION_DENIED` must not be used if the caller can not be identified (use `UNAUTHENTICATED` instead for those errors). This error code does not imply the request is valid or the requested entity exists or satisfies other pre-conditions. HTTP Mapping: 403 Forbidden",
            "The request does not have valid authentication credentials for the operation. HTTP Mapping: 401 Unauthorized",
            "Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space. HTTP Mapping: 429 Too Many Requests",
            "The operation was rejected because the system is not in a state required for the operation's execution. For example, the directory to be deleted is non-empty, an rmdir operation is applied to a non-directory, etc. Service implementors can use the following guidelines to decide between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: (a) Use `UNAVAILABLE` if the client can retry just the failing call. (b) Use `ABORTED` if the client should retry at a higher level. For example, when a client-specified test-and-set fails, indicating the client should restart a read-modify-write sequence. (c) Use `FAILED_PRECONDITION` if the client should not retry until the system state has been explicitly fixed. For example, if an \"rmdir\" fails because the directory is non-empty, `FAILED_PRECONDITION` should be returned since the client should not retry unless the files are deleted from the directory. HTTP Mapping: 400 Bad Request",
            "The operation was aborted, typically due to a concurrency issue such as a sequencer check failure or transaction abort. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 409 Conflict",
            "The operation was attempted past the valid range. E.g., seeking or reading past end-of-file. Unlike `INVALID_ARGUMENT`, this error indicates a problem that may be fixed if the system state changes. For example, a 32-bit file system will generate `INVALID_ARGUMENT` if asked to read at an offset that is not in the range [0,2^32-1], but it will generate `OUT_OF_RANGE` if asked to read from an offset past the current file size. There is a fair bit of overlap between `FAILED_PRECONDITION` and `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific error) when it applies so that callers who are iterating through a space can easily look for an `OUT_OF_RANGE` error to detect when they are done. HTTP Mapping: 400 Bad Request",
            "The operation is not implemented or is not supported/enabled in this service. HTTP Mapping: 501 Not Implemented",
            "Internal errors. This means that some invariants expected by the underlying system have been broken. This error code is reserved for serious errors. HTTP Mapping: 500 Internal Server Error",
            "The service is currently unavailable. This is most likely a transient condition, which can be corrected by retrying with a backoff. Note that it is not always safe to retry non-idempotent operations. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 503 Service Unavailable",
            "Unrecoverable data loss or corruption. HTTP Mapping: 500 Internal Server Error"
          ],
          "description": "Status code."
        },
        "resource": {
          "description": "The sub resource specific to this error (e.g. a proxy deployed within the EnvironmentConfig). If empty the error refers to the top level resource.",
          "type": "string"
        }
      },
      "description": "Details on why a resource update failed in the runtime.",
      "type": "object",
      "id": "GoogleCloudApigeeV1UpdateError"
    },
    "EdgeConfigstoreBundleBadBundle": {
      "description": "Describes why a bundle is invalid. Intended for use in error details.",
      "type": "object",
      "id": "EdgeConfigstoreBundleBadBundle",
      "properties": {
        "violations": {
          "items": {
            "$ref": "EdgeConfigstoreBundleBadBundleViolation"
          },
          "type": "array",
          "description": "Describes all precondition violations."
        }
      }
    },
    "GoogleCloudApigeeV1CanaryEvaluationMetricLabels": {
      "properties": {
        "instance_id": {
          "description": "Required. The instance ID associated with the metrics. In Apigee Hybrid, the value is configured during installation.",
          "type": "string"
        },
        "location": {
          "description": "Required. The location associated with the metrics.",
          "type": "string"
        },
        "env": {
          "description": "The environment ID associated with the metrics.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1CanaryEvaluationMetricLabels",
      "description": "Labels that can be used to filter Apigee metrics."
    },
    "GoogleCloudApigeeV1Properties": {
      "description": "Message for compatibility with legacy Edge specification for Java Properties object in JSON.",
      "id": "GoogleCloudApigeeV1Properties",
      "properties": {
        "property": {
          "type": "array",
          "description": "List of all properties in the object",
          "items": {
            "$ref": "GoogleCloudApigeeV1Property"
          }
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1ListNatAddressesResponse": {
      "description": "Response for ListNatAddresses.",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "Page token that you can include in a ListNatAddresses request to retrieve the next page of content. If omitted, no subsequent pages exist.",
          "type": "string"
        },
        "natAddresses": {
          "items": {
            "$ref": "GoogleCloudApigeeV1NatAddress"
          },
          "description": "List of NAT Addresses for the instance.",
          "type": "array"
        }
      },
      "id": "GoogleCloudApigeeV1ListNatAddressesResponse"
    },
    "GoogleCloudApigeeV1ApimServiceExtensionExtension": {
      "description": "Extension configuration for Apigee extension processor service extension.",
      "id": "GoogleCloudApigeeV1ApimServiceExtensionExtension",
      "properties": {
        "hostname": {
          "description": "Required. One of the hostnames of Apigee EnvGroup where the proxy is deployed. This hostname (i.e FDQN) will be used to route traffic from the specified forwarding rule to the environment in Apigee X instance where the proxy is deployed for handling extension traffic. Format: ^([a-zA-Z0-9. _-])+$",
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "Required. Name of the `LbTrafficExtension` resource. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number."
        },
        "failOpen": {
          "description": "Optional. Whether this request should fail open.",
          "type": "boolean"
        },
        "matchCondition": {
          "description": "Optional. Match Condition for CEL expression. Refer to https://cloud.google.com/service-extensions/docs/cel-matcher-language-reference for more details.",
          "type": "string"
        },
        "supportedEvents": {
          "type": "array",
          "items": {
            "type": "string",
            "enumDescriptions": [
              "Unspecified event.",
              "Request headers event.",
              "Request body event.",
              "Response headers event.",
              "Response body event.",
              "Request trailers event.",
              "Response trailers event."
            ],
            "enum": [
              "SUPPORTED_EVENT_UNSPECIFIED",
              "REQUEST_HEADERS",
              "REQUEST_BODY",
              "RESPONSE_HEADERS",
              "RESPONSE_BODY",
              "REQUEST_TRAILERS",
              "RESPONSE_TRAILERS"
            ]
          },
          "description": "Optional. Supported events for the Service Extension. If not specified, all events are supported."
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1SecurityAssessmentResultScoringResultAssessmentRecommendation": {
      "type": "object",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the assessment."
        },
        "verdict": {
          "type": "string",
          "enumDescriptions": [
            "The verdict is unspecified.",
            "The assessment has passed.",
            "The assessment has failed.",
            "The verdict is not applicable."
          ],
          "description": "Verdict indicates the assessment result.",
          "enum": [
            "VERDICT_UNSPECIFIED",
            "PASS",
            "FAIL",
            "NOT_APPLICABLE"
          ]
        },
        "scoreImpact": {
          "type": "integer",
          "description": "Score impact indicates the impact on the overall score if the assessment were to pass.",
          "format": "int32"
        },
        "recommendations": {
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityAssessmentResultScoringResultAssessmentRecommendationRecommendation"
          },
          "description": "The recommended steps of the assessment.",
          "type": "array"
        },
        "weight": {
          "type": "string",
          "enumDescriptions": [
            "The weight is unspecified.",
            "The weight is minor.",
            "The weight is moderate.",
            "The weight is major."
          ],
          "description": "The weight of the assessment which was set in the profile.",
          "enum": [
            "WEIGHT_UNSPECIFIED",
            "MINOR",
            "MODERATE",
            "MAJOR"
          ]
        }
      },
      "description": "The message format of a recommendation from the assessment.",
      "id": "GoogleCloudApigeeV1SecurityAssessmentResultScoringResultAssessmentRecommendation"
    },
    "GoogleCloudApigeeV1ApiDebugSession": {
      "type": "object",
      "properties": {
        "createTime": {
          "description": "The first transaction creation timestamp in millisecond, recorded by UAP.",
          "format": "google-datetime",
          "type": "string"
        },
        "environmentId": {
          "description": "The environment ID of the deployed API proxy.",
          "type": "string"
        },
        "apiProxyRevisionId": {
          "description": "The revision ID of the deployed API proxy.",
          "type": "string"
        },
        "id": {
          "description": "The debug session ID.",
          "type": "string"
        }
      },
      "description": "Session carries the debug session id and its creation time.",
      "id": "GoogleCloudApigeeV1ApiDebugSession"
    },
    "GoogleCloudApigeeV1AccessLoggingConfig": {
      "description": "Access logging configuration enables customers to ship the access logs from the tenant projects to their own project's cloud logging. The feature is at the instance level ad disabled by default. It can be enabled during CreateInstance or UpdateInstance.",
      "type": "object",
      "properties": {
        "filter": {
          "type": "string",
          "description": "Optional. Ship the access log entries that match the status_code defined in the filter. The status_code is the only expected/supported filter field. (Ex: status_code) The filter will parse it to the Common Expression Language semantics for expression evaluation to build the filter condition. (Ex: \"filter\": status_code \u003e= 200 && status_code \u003c 300 )"
        },
        "enabled": {
          "description": "Optional. Boolean flag that specifies whether the customer access log feature is enabled.",
          "type": "boolean"
        }
      },
      "id": "GoogleCloudApigeeV1AccessLoggingConfig"
    },
    "GoogleCloudApigeeV1ListKeyValueEntriesResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "Token that can be sent as `next_page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        },
        "keyValueEntries": {
          "description": "One or more key value map keys and values.",
          "items": {
            "$ref": "GoogleCloudApigeeV1KeyValueEntry"
          },
          "type": "array"
        }
      },
      "id": "GoogleCloudApigeeV1ListKeyValueEntriesResponse",
      "description": "The request structure for listing key value map keys and its corresponding values."
    },
    "GoogleCloudApigeeV1AccessGet": {
      "type": "object",
      "description": "Get action. For example, \"Get\" : { \"name\" : \"target.name\", \"value\" : \"default\" }",
      "properties": {
        "value": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1AccessGet"
    },
    "GoogleCloudApigeeV1DeveloperBalance": {
      "properties": {
        "wallets": {
          "items": {
            "$ref": "GoogleCloudApigeeV1DeveloperBalanceWallet"
          },
          "readOnly": true,
          "description": "Output only. List of all wallets. Each individual wallet stores the account balance for a particular currency.",
          "type": "array"
        }
      },
      "id": "GoogleCloudApigeeV1DeveloperBalance",
      "type": "object",
      "description": "Account balance for the developer."
    },
    "GoogleCloudApigeeV1RuntimeTraceSamplingConfig": {
      "type": "object",
      "id": "GoogleCloudApigeeV1RuntimeTraceSamplingConfig",
      "description": "NEXT ID: 3 RuntimeTraceSamplingConfig represents the detail settings of distributed tracing. Only the fields that are defined in the distributed trace configuration can be overridden using the distribute trace configuration override APIs.",
      "properties": {
        "sampler": {
          "description": "Sampler of distributed tracing. OFF is the default value.",
          "enum": [
            "SAMPLER_UNSPECIFIED",
            "OFF",
            "PROBABILITY"
          ],
          "enumDescriptions": [
            "Sampler unspecified.",
            "OFF means distributed trace is disabled, or the sampling probability is 0.",
            "PROBABILITY means traces are captured on a probability that defined by sampling_rate. The sampling rate is limited to 0 to 0.5 when this is set."
          ],
          "type": "string"
        },
        "samplingRate": {
          "type": "number",
          "format": "float",
          "description": "Field sampling rate. This value is only applicable when using the PROBABILITY sampler. The supported values are \u003e 0 and \u003c= 0.5."
        }
      }
    },
    "GoogleCloudApigeeV1Session": {
      "description": "Session carries the debug session id and its creation time.",
      "properties": {
        "id": {
          "description": "The debug session ID.",
          "type": "string"
        },
        "timestampMs": {
          "type": "string",
          "description": "The first transaction creation timestamp in millisecond, recorded by UAP.",
          "format": "int64"
        }
      },
      "id": "GoogleCloudApigeeV1Session",
      "type": "object"
    },
    "GoogleCloudApigeeV1AccessSet": {
      "id": "GoogleCloudApigeeV1AccessSet",
      "properties": {
        "name": {
          "type": "string"
        },
        "success": {
          "type": "boolean"
        },
        "value": {
          "type": "string"
        }
      },
      "description": "Set action. For example, \"Set\" : { \"name\" : \"target.name\", \"success\" : true, \"value\" : \"default\" }",
      "type": "object"
    },
    "GoogleCloudApigeeV1Datastore": {
      "id": "GoogleCloudApigeeV1Datastore",
      "description": "The data store defines the connection to export data repository (Cloud Storage, BigQuery), including the credentials used to access the data repository.",
      "type": "object",
      "properties": {
        "org": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Organization that the datastore belongs to"
        },
        "datastoreConfig": {
          "description": "Datastore Configurations.",
          "$ref": "GoogleCloudApigeeV1DatastoreConfig"
        },
        "lastUpdateTime": {
          "format": "int64",
          "type": "string",
          "readOnly": true,
          "description": "Output only. Datastore last update time, in milliseconds since the epoch of 1970-01-01T00:00:00Z"
        },
        "displayName": {
          "description": "Required. Display name in UI",
          "type": "string"
        },
        "targetType": {
          "description": "Destination storage type. Supported types `gcs` or `bigquery`.",
          "type": "string"
        },
        "self": {
          "type": "string",
          "description": "Output only. Resource link of Datastore. Example: `/organizations/{org}/analytics/datastores/{uuid}`",
          "readOnly": true
        },
        "createTime": {
          "readOnly": true,
          "description": "Output only. Datastore create time, in milliseconds since the epoch of 1970-01-01T00:00:00Z",
          "format": "int64",
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1InstanceDeploymentStatusDeployedRoute": {
      "description": "Route deployed in the ingress routing table.",
      "id": "GoogleCloudApigeeV1InstanceDeploymentStatusDeployedRoute",
      "type": "object",
      "properties": {
        "envgroup": {
          "type": "string",
          "description": "Environment group where this route is installed."
        },
        "environment": {
          "type": "string",
          "description": "Destination environment. This will be empty if the route is not yet reported."
        },
        "basepath": {
          "type": "string",
          "description": "Base path in the routing table."
        },
        "percentage": {
          "type": "integer",
          "description": "Percentage of ingress replicas reporting this route.",
          "format": "int32"
        }
      }
    },
    "GoogleCloudApigeeV1SecurityAssessmentResultResource": {
      "description": "Resource for which we are computing security assessment.",
      "type": "object",
      "id": "GoogleCloudApigeeV1SecurityAssessmentResultResource",
      "properties": {
        "resourceRevisionId": {
          "type": "string",
          "description": "The revision id for the resource. In case of Apigee, this is proxy revision id."
        },
        "apiHubGatewayType": {
          "enumDescriptions": [
            "Gateway type is not specified.",
            "Gateway is Apigee X for API Hub.",
            "Gateway is Apigee Hybrid for API Hub.",
            "Gateway is Apigee Edge for API Hub.",
            "Gateway is Apigee OPDK for API Hub."
          ],
          "enum": [
            "API_HUB_GATEWAY_TYPE_UNSPECIFIED",
            "APIGEE_X",
            "APIGEE_HYBRID",
            "APIGEE_EDGE",
            "APIGEE_OPDK"
          ],
          "description": "Optional. ",
          "type": "string"
        },
        "apiHubDeploymentDetails": {
          "description": "Output only. Additional details for the API Hub deployment.",
          "readOnly": true,
          "$ref": "GoogleCloudApigeeV1SecurityAssessmentResultResourceApiHubDeploymentDetails"
        },
        "name": {
          "description": "Required. Name of this resource. For an Apigee API Proxy, this should be the id of the API proxy. For an API Hub Deployment, this should be the id of the deployment.",
          "type": "string"
        },
        "type": {
          "enum": [
            "RESOURCE_TYPE_UNSPECIFIED",
            "API_PROXY",
            "API_HUB_DEPLOYMENT"
          ],
          "enumDescriptions": [
            "ResourceType not specified.",
            "Resource is an Apigee Proxy.",
            "Resource is an API Hub deployment."
          ],
          "type": "string",
          "description": "Required. Type of this resource."
        }
      }
    },
    "GoogleCloudApigeeV1DeveloperBalanceWallet": {
      "type": "object",
      "id": "GoogleCloudApigeeV1DeveloperBalanceWallet",
      "properties": {
        "lastCreditTime": {
          "description": "Output only. Time at which the developer last added credit to the account in milliseconds since epoch.",
          "format": "int64",
          "type": "string",
          "readOnly": true
        },
        "balance": {
          "description": "Current remaining balance of the developer for a particular currency.",
          "$ref": "GoogleTypeMoney"
        }
      },
      "description": "Wallet used to manage an account balance for a particular currency."
    },
    "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestApiHubApiArray": {
      "properties": {
        "apis": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Required. The array of API Hub API IDs. Format: `projects/{project}/locations/{location}/apis/{api}`"
        }
      },
      "description": "Message for the array of API Hub APIs.",
      "type": "object",
      "id": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestApiHubApiArray"
    },
    "GoogleCloudApigeeV1ListOrganizationsResponse": {
      "id": "GoogleCloudApigeeV1ListOrganizationsResponse",
      "type": "object",
      "properties": {
        "organizations": {
          "description": "List of Apigee organizations and associated Google Cloud projects.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1OrganizationProjectMapping"
          }
        }
      }
    },
    "GoogleCloudApigeeV1QueryTimeSeriesStatsResponse": {
      "properties": {
        "columns": {
          "items": {
            "type": "string"
          },
          "description": "Column names corresponding to the same order as the inner values in the stats field.",
          "type": "array"
        },
        "nextPageToken": {
          "type": "string",
          "description": "Next page token."
        },
        "values": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1QueryTimeSeriesStatsResponseSequence"
          },
          "description": "Results of the query returned as a JSON array."
        }
      },
      "type": "object",
      "description": "Represents security stats result as a collection of time series sequences.",
      "id": "GoogleCloudApigeeV1QueryTimeSeriesStatsResponse"
    },
    "GoogleCloudApigeeV1Subscription": {
      "properties": {
        "name": {
          "description": "Full name of the Pub/Sub subcription. Use the following structure in your request: `subscription \"projects/foo/subscription/bar\"`",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1Subscription",
      "type": "object",
      "description": "Pub/Sub subscription of an environment."
    },
    "GoogleCloudApigeeV1ListDnsZonesResponse": {
      "description": "Response for list DNS zones.",
      "properties": {
        "nextPageToken": {
          "description": "Page token that you can include in an `ListDnsZones` request to retrieve the next page. If omitted, no subsequent pages exist.",
          "type": "string"
        },
        "dnsZones": {
          "description": "DNS zones in a given organization.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1DnsZone"
          }
        }
      },
      "id": "GoogleCloudApigeeV1ListDnsZonesResponse",
      "type": "object"
    },
    "GoogleCloudApigeeV1ListApimServiceExtensionsResponse": {
      "properties": {
        "apimServiceExtensions": {
          "description": "service extension in a given organization.",
          "items": {
            "$ref": "GoogleCloudApigeeV1ApimServiceExtension"
          },
          "type": "array"
        },
        "nextPageToken": {
          "type": "string",
          "description": "Page token that you can include in an `ListApimServiceExtensions` request to retrieve the next page. If omitted, no subsequent pages exist."
        }
      },
      "id": "GoogleCloudApigeeV1ListApimServiceExtensionsResponse",
      "description": "Response for list service extensions.",
      "type": "object"
    },
    "GoogleCloudApigeeV1DeploymentConfig": {
      "id": "GoogleCloudApigeeV1DeploymentConfig",
      "type": "object",
      "properties": {
        "deploymentGroups": {
          "description": "The list of deployment groups in which this proxy should be deployed. Not currently populated for shared flows.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "serviceAccount": {
          "description": "The service account identity associated with this deployment. If non-empty, will be in the following format: `projects/-/serviceAccounts/{account_email}`",
          "type": "string"
        },
        "endpoints": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "A mapping from basepaths to proxy endpoint names in this proxy. Not populated for shared flows."
        },
        "proxyUid": {
          "description": "Unique ID of the API proxy revision.",
          "type": "string"
        },
        "location": {
          "description": "Location of the API proxy bundle as a URI.",
          "type": "string"
        },
        "basePath": {
          "description": "Base path where the application will be hosted. Defaults to \"/\".",
          "type": "string"
        },
        "uid": {
          "description": "Unique ID. The ID will only change if the deployment is deleted and recreated.",
          "type": "string"
        },
        "name": {
          "description": "Name of the API or shared flow revision to be deployed in the following format: `organizations/{org}/apis/{api}/revisions/{rev}` or `organizations/{org}/sharedflows/{sharedflow}/revisions/{rev}`",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional key-value metadata for the deployment.",
          "type": "object"
        }
      },
      "description": "NEXT ID: 11"
    },
    "GoogleCloudApigeeV1ExpireDeveloperSubscriptionRequest": {
      "id": "GoogleCloudApigeeV1ExpireDeveloperSubscriptionRequest",
      "type": "object",
      "description": "Request for ExpireDeveloperSubscription.",
      "properties": {}
    },
    "GoogleTypeExpr": {
      "type": "object",
      "properties": {
        "title": {
          "description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
          "type": "string"
        },
        "expression": {
          "description": "Textual representation of an expression in Common Expression Language syntax.",
          "type": "string"
        },
        "description": {
          "description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
          "type": "string"
        },
        "location": {
          "description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
          "type": "string"
        }
      },
      "id": "GoogleTypeExpr",
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() \u003c 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information."
    },
    "GoogleCloudApigeeV1AppGroupAppKey": {
      "type": "object",
      "properties": {
        "expiresInSeconds": {
          "format": "int64",
          "description": "Immutable. Expiration time, in seconds, for the consumer key. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set.",
          "type": "string"
        },
        "issuedAt": {
          "readOnly": true,
          "type": "string",
          "format": "int64",
          "description": "Output only. Time the AppGroup app was created in milliseconds since epoch."
        },
        "scopes": {
          "items": {
            "type": "string"
          },
          "description": "Scopes to apply to the app. The specified scope names must already be defined for the API product that you associate with the app.",
          "type": "array"
        },
        "status": {
          "description": "Status of the credential. Valid values include `approved` or `revoked`.",
          "type": "string"
        },
        "consumerSecret": {
          "description": "Secret key.",
          "type": "string"
        },
        "apiProducts": {
          "items": {
            "$ref": "GoogleCloudApigeeV1APIProductAssociation"
          },
          "type": "array",
          "readOnly": true,
          "description": "Output only. List of API products and its status for which the credential can be used. **Note**: Use UpdateAppGroupAppKeyApiProductRequest API to make the association after the consumer key and secret are created."
        },
        "consumerKey": {
          "description": "Immutable. Consumer key.",
          "type": "string"
        },
        "attributes": {
          "description": "List of attributes associated with the credential.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          }
        },
        "expiresAt": {
          "type": "string",
          "format": "int64",
          "description": "Output only. Time the AppGroup app expires in milliseconds since epoch.",
          "readOnly": true
        }
      },
      "description": "AppGroupAppKey contains all the information associated with the credentials.",
      "id": "GoogleCloudApigeeV1AppGroupAppKey"
    },
    "GoogleCloudApigeeV1Keystore": {
      "id": "GoogleCloudApigeeV1Keystore",
      "description": "Datastore for Certificates and Aliases.",
      "properties": {
        "name": {
          "description": "Required. Resource ID for this keystore. Values must match the regular expression `[\\w[:space:].-]{1,255}`.",
          "type": "string"
        },
        "aliases": {
          "readOnly": true,
          "description": "Output only. Aliases in this keystore.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1ReportInstanceStatusRequest": {
      "type": "object",
      "description": "Request for ReportInstanceStatus.",
      "properties": {
        "resources": {
          "items": {
            "$ref": "GoogleCloudApigeeV1ResourceStatus"
          },
          "type": "array",
          "description": "Status for config resources"
        },
        "reportTime": {
          "format": "google-datetime",
          "type": "string",
          "description": "The time the report was generated in the runtime. Used to prevent an old status from overwriting a newer one. An instance should space out it's status reports so that clock skew does not play a factor."
        },
        "instanceUid": {
          "description": "A unique ID for the instance which is guaranteed to be unique in case the user installs multiple hybrid runtimes with the same instance ID.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1ReportInstanceStatusRequest"
    },
    "GoogleTypeMoney": {
      "id": "GoogleTypeMoney",
      "properties": {
        "nanos": {
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
          "type": "integer",
          "format": "int32"
        },
        "units": {
          "format": "int64",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
          "type": "string"
        },
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        }
      },
      "description": "Represents an amount of money with its currency type.",
      "type": "object"
    },
    "GoogleCloudApigeeV1GenerateDownloadUrlRequest": {
      "id": "GoogleCloudApigeeV1GenerateDownloadUrlRequest",
      "type": "object",
      "properties": {},
      "description": "Request for GenerateDownloadUrl method."
    },
    "GoogleCloudApigeeV1DataCollectorConfig": {
      "id": "GoogleCloudApigeeV1DataCollectorConfig",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the data collector in the following format: `organizations/{org}/datacollectors/{datacollector}`"
        },
        "type": {
          "description": "Data type accepted by the data collector.",
          "type": "string",
          "enumDescriptions": [
            "For future compatibility.",
            "For integer values.",
            "For float values.",
            "For string values.",
            "For boolean values.",
            "For datetime values."
          ],
          "enum": [
            "TYPE_UNSPECIFIED",
            "INTEGER",
            "FLOAT",
            "STRING",
            "BOOLEAN",
            "DATETIME"
          ]
        }
      },
      "description": "Data collector and its configuration."
    },
    "GoogleCloudApigeeV1QueryTimeSeriesStatsResponseSequence": {
      "properties": {
        "points": {
          "description": "List of points. First value of each inner list is a timestamp.",
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "any"
            }
          }
        },
        "dimensions": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of dimensions and their values that uniquely identifies a time series sequence.",
          "type": "object"
        }
      },
      "id": "GoogleCloudApigeeV1QueryTimeSeriesStatsResponseSequence",
      "type": "object",
      "description": "A sequence of time series."
    },
    "GoogleCloudApigeeV1ListApiProxiesResponse": {
      "properties": {
        "proxies": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1ApiProxy"
          }
        }
      },
      "id": "GoogleCloudApigeeV1ListApiProxiesResponse",
      "type": "object"
    },
    "GoogleCloudApigeeV1AppGroupMonetizationConfig": {
      "id": "GoogleCloudApigeeV1AppGroupMonetizationConfig",
      "description": "Monetization configuration for the AppGroup.",
      "properties": {
        "billingType": {
          "enum": [
            "BILLING_TYPE_UNSPECIFIED",
            "PREPAID",
            "POSTPAID"
          ],
          "enumDescriptions": [
            "The default/unset value.",
            "AppGroup pays in advance for the use of APIs and the charged amount is deducted from their account balance.",
            "AppGroup does not maintain an account balance. The API provider bills the AppGroup for API usage."
          ],
          "description": "Required. Billing type.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1TlsInfoCommonName": {
      "type": "object",
      "properties": {
        "value": {
          "description": "The TLS Common Name string of the certificate.",
          "type": "string"
        },
        "wildcardMatch": {
          "description": "Indicates whether the cert should be matched against as a wildcard cert.",
          "type": "boolean"
        }
      },
      "id": "GoogleCloudApigeeV1TlsInfoCommonName"
    },
    "GoogleCloudApigeeV1EnvironmentConfigClientIPResolutionConfig": {
      "description": "Configuration for resolving the client ip.",
      "id": "GoogleCloudApigeeV1EnvironmentConfigClientIPResolutionConfig",
      "properties": {
        "headerIndexAlgorithm": {
          "description": "Resolves the client ip based on a custom header.",
          "$ref": "GoogleCloudApigeeV1EnvironmentConfigClientIPResolutionConfigHeaderIndexAlgorithm"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1SecurityProfile": {
      "type": "object",
      "description": "Represents a SecurityProfile resource.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Immutable. Name of the security profile resource. Format: organizations/{org}/securityProfiles/{profile}"
        },
        "scoringConfigs": {
          "type": "array",
          "description": "List of profile scoring configs in this revision.",
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityProfileScoringConfig"
          }
        },
        "maxScore": {
          "readOnly": true,
          "type": "integer",
          "format": "int32",
          "description": "Output only. Maximum security score that can be generated by this profile."
        },
        "revisionId": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Revision ID of the security profile.",
          "format": "int64"
        },
        "profileConfig": {
          "$ref": "GoogleCloudApigeeV1ProfileConfig",
          "description": "Required. Customized profile configuration that computes the security score."
        },
        "revisionCreateTime": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. The time when revision was created.",
          "format": "google-datetime"
        },
        "description": {
          "description": "Description of the security profile.",
          "type": "string"
        },
        "revisionPublishTime": {
          "description": "Output only. DEPRECATED: DO NOT USE The time when revision was published. Once published, the security profile revision cannot be updated further and can be attached to environments.",
          "format": "google-datetime",
          "deprecated": true,
          "type": "string",
          "readOnly": true
        },
        "minScore": {
          "format": "int32",
          "type": "integer",
          "readOnly": true,
          "description": "Output only. Minimum security score that can be generated by this profile."
        },
        "displayName": {
          "description": "DEPRECATED: DO NOT USE Display name of the security profile.",
          "type": "string",
          "deprecated": true
        },
        "environments": {
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityProfileEnvironment"
          },
          "type": "array",
          "description": "List of environments attached to security profile."
        },
        "revisionUpdateTime": {
          "type": "string",
          "description": "Output only. The time when revision was updated.",
          "format": "google-datetime",
          "readOnly": true
        }
      },
      "id": "GoogleCloudApigeeV1SecurityProfile"
    },
    "GoogleCloudApigeeV1QueryTabularStatsResponse": {
      "id": "GoogleCloudApigeeV1QueryTabularStatsResponse",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Column names corresponding to the same order as the inner values in the stats field."
        },
        "values": {
          "description": "Resultant rows from the executed query.",
          "items": {
            "type": "array",
            "items": {
              "type": "any"
            }
          },
          "type": "array"
        },
        "nextPageToken": {
          "description": "Next page token.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Encapsulates two kinds of stats that are results of the dimensions and aggregations requested. - Tabular rows. - Time series data. Example of tabular rows, Represents security stats results as a row of flat values."
    },
    "GoogleCloudApigeeV1AddonsConfig": {
      "description": "Add-on configurations for the Apigee organization.",
      "properties": {
        "analyticsConfig": {
          "$ref": "GoogleCloudApigeeV1AnalyticsConfig",
          "description": "Configuration for the Analytics add-on. Only used in organizations.environments.addonsConfig."
        },
        "connectorsPlatformConfig": {
          "$ref": "GoogleCloudApigeeV1ConnectorsPlatformConfig",
          "description": "Configuration for the Connectors Platform add-on."
        },
        "advancedApiOpsConfig": {
          "$ref": "GoogleCloudApigeeV1AdvancedApiOpsConfig",
          "description": "Configuration for the Advanced API Ops add-on."
        },
        "monetizationConfig": {
          "description": "Configuration for the Monetization add-on.",
          "$ref": "GoogleCloudApigeeV1MonetizationConfig"
        },
        "integrationConfig": {
          "$ref": "GoogleCloudApigeeV1IntegrationConfig",
          "description": "Configuration for the Integration add-on."
        },
        "apiSecurityConfig": {
          "description": "Configuration for the API Security add-on.",
          "$ref": "GoogleCloudApigeeV1ApiSecurityConfig"
        }
      },
      "id": "GoogleCloudApigeeV1AddonsConfig",
      "type": "object"
    },
    "GoogleCloudApigeeV1CreditAppGroupBalanceRequest": {
      "properties": {
        "transactionAmount": {
          "$ref": "GoogleTypeMoney",
          "description": "Required. The amount of money to be credited. The wallet corresponding to the currency specified within `transaction_amount` will be updated. For example, if you specified `currency_code` within `transaction_amount` as \"USD\", then the amount would be added to the wallet which has the \"USD\" currency or if no such wallet exists, a new wallet will be created with the \"USD\" currency."
        },
        "transactionId": {
          "description": "Required. Each transaction_id uniquely identifies a credit balance request. If multiple requests are received with the same transaction_id, only one of them will be considered.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Request for CreditAppGroupBalance.",
      "id": "GoogleCloudApigeeV1CreditAppGroupBalanceRequest"
    },
    "GoogleCloudApigeeV1ListSecurityProfilesV2Response": {
      "id": "GoogleCloudApigeeV1ListSecurityProfilesV2Response",
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        },
        "securityProfilesV2": {
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityProfileV2"
          },
          "description": "List of security profiles in the organization.",
          "type": "array"
        }
      },
      "type": "object",
      "description": "Response for ListSecurityProfilesV2."
    },
    "GoogleCloudApigeeV1SetAddonEnablementRequest": {
      "description": "Request for SetAddonEnablement.",
      "id": "GoogleCloudApigeeV1SetAddonEnablementRequest",
      "properties": {
        "apiSecurityEnabled": {
          "description": "If the API Security should be enabled in the environment.",
          "type": "boolean"
        },
        "analyticsEnabled": {
          "description": "If the Analytics should be enabled in the environment.",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1RateRange": {
      "id": "GoogleCloudApigeeV1RateRange",
      "type": "object",
      "description": "API call volume range and the fees charged when the total number of API calls is within the range.",
      "properties": {
        "start": {
          "format": "int64",
          "type": "string",
          "description": "Starting value of the range. Set to 0 or `null` for the initial range of values."
        },
        "end": {
          "format": "int64",
          "type": "string",
          "description": "Ending value of the range. Set to 0 or `null` for the last range of values."
        },
        "fee": {
          "$ref": "GoogleTypeMoney",
          "description": "Fee to charge when total number of API calls falls within this range."
        }
      }
    },
    "GoogleCloudApigeeV1UpdateSecurityIncidentRequest": {
      "properties": {
        "updateMask": {
          "format": "google-fieldmask",
          "type": "string",
          "description": "Required. The list of fields to update. Allowed fields are: LINT.IfChange(allowed_update_fields_comment) - observability LINT.ThenChange()"
        },
        "securityIncident": {
          "$ref": "GoogleCloudApigeeV1SecurityIncident",
          "description": "Required. The security incident to update. Must contain all existing populated fields of the current incident."
        }
      },
      "description": "Request for UpdateSecurityIncident.",
      "type": "object",
      "id": "GoogleCloudApigeeV1UpdateSecurityIncidentRequest"
    },
    "GoogleCloudApigeeV1DeleteCustomReportResponse": {
      "properties": {
        "message": {
          "type": "string",
          "description": "The response contains only a message field."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1DeleteCustomReportResponse"
    },
    "GoogleRpcPreconditionFailure": {
      "properties": {
        "violations": {
          "type": "array",
          "items": {
            "$ref": "GoogleRpcPreconditionFailureViolation"
          },
          "description": "Describes all precondition violations."
        }
      },
      "id": "GoogleRpcPreconditionFailure",
      "type": "object",
      "description": "Describes what preconditions have failed. For example, if an RPC failed because it required the Terms of Service to be acknowledged, it could list the terms of service violation in the PreconditionFailure message."
    },
    "GoogleCloudApigeeV1AliasRevisionConfig": {
      "id": "GoogleCloudApigeeV1AliasRevisionConfig",
      "type": "object",
      "properties": {
        "location": {
          "description": "Location of the alias file. For example, a Google Cloud Storage URI.",
          "type": "string"
        },
        "type": {
          "enum": [
            "ALIAS_TYPE_UNSPECIFIED",
            "CERT",
            "KEY_CERT"
          ],
          "type": "string",
          "enumDescriptions": [
            "Alias type is not specified.",
            "Certificate.",
            "Key/certificate pair."
          ]
        },
        "name": {
          "type": "string",
          "description": "Name of the alias revision included in the keystore in the following format: `organizations/{org}/environments/{env}/keystores/{keystore}/aliases/{alias}/revisions/{rev}`"
        }
      }
    },
    "GoogleCloudApigeeV1DeploymentGroupConfig": {
      "description": "DeploymentGroupConfig represents a deployment group that should be present in a particular environment.",
      "type": "object",
      "properties": {
        "revisionId": {
          "type": "string",
          "format": "int64",
          "description": "Revision number which can be used by the runtime to detect if the deployment group has changed between two versions."
        },
        "uid": {
          "description": "Unique ID. The ID will only change if the deployment group is deleted and recreated.",
          "type": "string"
        },
        "deploymentGroupType": {
          "enum": [
            "DEPLOYMENT_GROUP_TYPE_UNSPECIFIED",
            "STANDARD",
            "EXTENSIBLE"
          ],
          "enumDescriptions": [
            "Unspecified type",
            "Standard type",
            "Extensible Type"
          ],
          "description": "Type of the deployment group, which will be either Standard or Extensible.",
          "type": "string"
        },
        "name": {
          "description": "Name of the deployment group in the following format: `organizations/{org}/environments/{env}/deploymentGroups/{group}`.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1DeploymentGroupConfig"
    },
    "GoogleCloudApigeeV1SecurityAssessmentResultScoringResultAssessmentRecommendationRecommendation": {
      "properties": {
        "description": {
          "description": "The description of the recommendation.",
          "type": "string"
        },
        "link": {
          "description": "The link for the recommendation.",
          "$ref": "GoogleCloudApigeeV1SecurityAssessmentResultScoringResultAssessmentRecommendationRecommendationLink"
        }
      },
      "description": "The format of the assessment recommendation.",
      "id": "GoogleCloudApigeeV1SecurityAssessmentResultScoringResultAssessmentRecommendationRecommendation",
      "type": "object"
    },
    "GoogleCloudApigeeV1ListDatastoresResponse": {
      "properties": {
        "datastores": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Datastore"
          },
          "description": "A list of datastores"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1ListDatastoresResponse",
      "description": "The response for ListDatastores"
    },
    "GoogleCloudApigeeV1ResourceFile": {
      "description": "Metadata about a resource file.",
      "properties": {
        "name": {
          "type": "string",
          "description": "ID of the resource file."
        },
        "type": {
          "description": "Resource file type. {{ resource_file_type }}",
          "type": "string"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1ResourceFile"
    },
    "GoogleCloudApigeeV1ApiCategory": {
      "description": "`ApiCategory` represents an API category. [Catalog items](/apigee/docs/reference/apis/apigee/rest/v1/organizations.sites.apidocs) can be tagged with API categories; users viewing the API catalog in the portal will have the option to browse the catalog by category.",
      "id": "GoogleCloudApigeeV1ApiCategory",
      "properties": {
        "updateTime": {
          "format": "int64",
          "type": "string",
          "description": "Time the category was last modified in milliseconds since epoch."
        },
        "name": {
          "description": "Name of the category.",
          "type": "string"
        },
        "id": {
          "type": "string",
          "description": "ID of the category (a UUID)."
        },
        "siteId": {
          "description": "Name of the portal.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1TraceConfigOverride": {
      "properties": {
        "name": {
          "type": "string",
          "description": "ID of the trace configuration override specified as a system-generated UUID."
        },
        "samplingConfig": {
          "description": "Trace configuration to override.",
          "$ref": "GoogleCloudApigeeV1TraceSamplingConfig"
        },
        "apiProxy": {
          "description": "ID of the API proxy that will have its trace configuration overridden.",
          "type": "string"
        }
      },
      "description": "A representation of a configuration override.",
      "id": "GoogleCloudApigeeV1TraceConfigOverride",
      "type": "object"
    },
    "GoogleCloudApigeeV1SecurityIncident": {
      "description": "Represents an SecurityIncident resource.",
      "type": "object",
      "id": "GoogleCloudApigeeV1SecurityIncident",
      "properties": {
        "detectionTypes": {
          "readOnly": true,
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. Detection types which are part of the incident. Examples: Flooder, OAuth Abuser, Static Content Scraper, Anomaly Detection."
        },
        "lastObservabilityChangeTime": {
          "type": "string",
          "readOnly": true,
          "format": "google-datetime",
          "description": "Output only. The time when the incident observability was last changed."
        },
        "riskLevel": {
          "enum": [
            "RISK_LEVEL_UNSPECIFIED",
            "LOW",
            "MODERATE",
            "SEVERE"
          ],
          "description": "Output only. Risk level of the incident.",
          "enumDescriptions": [
            "Risk Level Unspecified.",
            "Risk level of the incident is low.",
            "Risk level of the incident is moderate.",
            "Risk level of the incident is severe."
          ],
          "readOnly": true,
          "type": "string"
        },
        "firstDetectedTime": {
          "type": "string",
          "description": "Output only. The time when events associated with the incident were first detected.",
          "format": "google-datetime",
          "readOnly": true
        },
        "trafficCount": {
          "format": "int64",
          "description": "Total traffic detected as part of the incident.",
          "type": "string"
        },
        "observability": {
          "enumDescriptions": [
            "The incident observability is unspecified.",
            "The incident is currently active. Can change to this status from archived.",
            "The incident is currently archived and was archived by the customer."
          ],
          "type": "string",
          "description": "Optional. Indicates if the user archived this incident.",
          "enum": [
            "OBSERVABILITY_UNSPECIFIED",
            "ACTIVE",
            "ARCHIVED"
          ]
        },
        "lastDetectedTime": {
          "description": "Output only. The time when events associated with the incident were last detected.",
          "format": "google-datetime",
          "type": "string",
          "readOnly": true
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name of the security incident."
        },
        "name": {
          "description": "Immutable. Name of the security incident resource. Format: organizations/{org}/environments/{environment}/securityIncidents/{incident} Example: organizations/apigee-org/environments/dev/securityIncidents/1234-5678-9101-1111",
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1GenerateUploadUrlRequest": {
      "description": "Request for GenerateUploadUrl method.",
      "properties": {},
      "id": "GoogleCloudApigeeV1GenerateUploadUrlRequest",
      "type": "object"
    },
    "GoogleCloudApigeeV1EnvironmentGroupConfig": {
      "id": "GoogleCloudApigeeV1EnvironmentGroupConfig",
      "description": "EnvironmentGroupConfig is a revisioned snapshot of an EnvironmentGroup and its associated routing rules.",
      "properties": {
        "hostnames": {
          "description": "Host names for the environment group.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "location": {
          "type": "string",
          "description": "When this message appears in the top-level IngressConfig, this field will be populated in lieu of the inlined routing_rules and hostnames fields. Some URL for downloading the full EnvironmentGroupConfig for this group."
        },
        "revisionId": {
          "format": "int64",
          "description": "Revision id that defines the ordering of the EnvironmentGroupConfig resource. The higher the revision, the more recently the configuration was deployed.",
          "type": "string"
        },
        "uid": {
          "description": "A unique id for the environment group config that will only change if the environment group is deleted and recreated.",
          "type": "string"
        },
        "routingRules": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1RoutingRule"
          },
          "description": "Ordered list of routing rules defining how traffic to this environment group's hostnames should be routed to different environments."
        },
        "name": {
          "description": "Name of the environment group in the following format: `organizations/{org}/envgroups/{envgroup}`.",
          "type": "string"
        },
        "endpointChainingRules": {
          "description": "A list of proxies in each deployment group for proxy chaining calls.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1EndpointChainingRule"
          }
        }
      },
      "type": "object"
    },
    "GoogleIamV1AuditLogConfig": {
      "id": "GoogleIamV1AuditLogConfig",
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "logType": {
          "enum": [
            "LOG_TYPE_UNSPECIFIED",
            "ADMIN_READ",
            "DATA_WRITE",
            "DATA_READ"
          ],
          "type": "string",
          "enumDescriptions": [
            "Default case. Should never be this.",
            "Admin reads. Example: CloudIAM getIamPolicy",
            "Data writes. Example: CloudSQL Users create",
            "Data reads. Example: CloudSQL Users list"
          ],
          "description": "The log type that this config enables."
        },
        "exemptedMembers": {
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1EndpointChainingRule": {
      "id": "GoogleCloudApigeeV1EndpointChainingRule",
      "description": "EndpointChainingRule specifies the proxies contained in a particular deployment group, so that other deployment groups can find them in chaining calls.",
      "type": "object",
      "properties": {
        "deploymentGroup": {
          "type": "string",
          "description": "The deployment group to target for cross-shard chaining calls to these proxies."
        },
        "proxyIds": {
          "description": "List of proxy ids which may be found in the given deployment group.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      }
    },
    "GoogleCloudApigeeV1GrpcOperationGroup": {
      "id": "GoogleCloudApigeeV1GrpcOperationGroup",
      "type": "object",
      "description": "List of gRPC operation configuration details associated with Apigee API proxies.",
      "properties": {
        "operationConfigs": {
          "description": "Required. List of operation configurations for either Apigee API proxies that are associated with this API product.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1GrpcOperationConfig"
          }
        }
      }
    },
    "GoogleCloudApigeeV1KeyAliasReference": {
      "type": "object",
      "properties": {
        "reference": {
          "description": "Reference name in the following format: `organizations/{org}/environments/{env}/references/{reference}`",
          "type": "string"
        },
        "aliasId": {
          "type": "string",
          "description": "Alias ID. Must exist in the keystore referred to by the reference."
        }
      },
      "id": "GoogleCloudApigeeV1KeyAliasReference"
    },
    "GoogleCloudApigeeV1ProvisionOrganizationRequest": {
      "properties": {
        "authorizedNetwork": {
          "description": "Compute Engine network used for Service Networking to be peered with Apigee runtime instances. See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). Apigee also supports shared VPC (that is, the host network project is not the same as the one that is peering with Apigee). See [Shared VPC overview](https://cloud.google.com/vpc/docs/shared-vpc). To use a shared VPC network, use the following format: `projects/{host-project-id}/{region}/networks/{network-name}`. For example: `projects/my-sharedvpc-host/global/networks/mynetwork`",
          "type": "string"
        },
        "runtimeLocation": {
          "description": "Cloud Platform location for the runtime instance. Defaults to zone `us-west1-a`. If a region is provided, `EVAL` organizations will use the region for automatically selecting a zone for the runtime instance.",
          "type": "string"
        },
        "analyticsRegion": {
          "description": "Primary Cloud Platform region for analytics data storage. For valid values, see [Create an organization](https://cloud.google.com/apigee/docs/hybrid/latest/precog-provision). Defaults to `us-west1`.",
          "type": "string"
        },
        "disableVpcPeering": {
          "description": "Optional. Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Required if an authorizedNetwork on the consumer project is not provided, in which case the flag should be set to true. The value must be set before the creation of any Apigee runtime instance and can be updated only when there are no runtime instances. **Note:** Apigee will be deprecating the vpc peering model that requires you to provide 'authorizedNetwork', by making the non-peering model as the default way of provisioning Apigee organization in future. So, this will be a temporary flag to enable the transition. Not supported for Apigee hybrid.",
          "type": "boolean"
        }
      },
      "description": "Request for ProvisionOrganization.",
      "id": "GoogleCloudApigeeV1ProvisionOrganizationRequest",
      "type": "object"
    },
    "GoogleCloudApigeeV1SecurityReportMetadata": {
      "properties": {
        "mimeType": {
          "description": "MIME type / Output format.",
          "type": "string"
        },
        "metrics": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Metrics of the SecurityReport. Example: [\"name:bot_count,func:sum,alias:sum_bot_count\"]"
        },
        "dimensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Dimensions of the SecurityReport."
        },
        "timeUnit": {
          "type": "string",
          "description": "Query GroupBy time unit. Example: \"seconds\", \"minute\", \"hour\""
        },
        "endTimestamp": {
          "type": "string",
          "description": "End timestamp of the query range.",
          "format": "google-datetime"
        },
        "startTimestamp": {
          "type": "string",
          "format": "google-datetime",
          "description": "Start timestamp of the query range."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1SecurityReportMetadata",
      "description": "Metadata for the security report."
    },
    "GoogleCloudApigeeV1AppGroupApp": {
      "type": "object",
      "id": "GoogleCloudApigeeV1AppGroupApp",
      "properties": {
        "name": {
          "description": "Immutable. Name of the AppGroup app whose resource name format is of syntax (organizations/*/appgroups/*/apps/*).",
          "type": "string"
        },
        "keyExpiresIn": {
          "type": "string",
          "description": "Immutable. Expiration time, in seconds, for the consumer key that is generated for the AppGroup app. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set.",
          "format": "int64"
        },
        "credentials": {
          "items": {
            "$ref": "GoogleCloudApigeeV1Credential"
          },
          "type": "array",
          "readOnly": true,
          "description": "Output only. Set of credentials for the AppGroup app consisting of the consumer key/secret pairs associated with the API products."
        },
        "appGroup": {
          "type": "string",
          "description": "Immutable. Name of the parent AppGroup whose resource name format is of syntax (organizations/*/appgroups/*)."
        },
        "lastModifiedAt": {
          "format": "int64",
          "type": "string",
          "description": "Output only. Time the AppGroup app was modified in milliseconds since epoch.",
          "readOnly": true
        },
        "createdAt": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Time the AppGroup app was created in milliseconds since epoch.",
          "format": "int64"
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          },
          "description": "List of attributes for the AppGroup app."
        },
        "appId": {
          "description": "Immutable. ID of the AppGroup app.",
          "type": "string"
        },
        "scopes": {
          "description": "Scopes to apply to the AppGroup app. The specified scopes must already exist for the API product that you associate with the AppGroup app.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "status": {
          "type": "string",
          "description": "Status of the App. Valid values include `approved` or `revoked`."
        },
        "apiProducts": {
          "description": "List of API products associated with the AppGroup app.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "callbackUrl": {
          "description": "Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to AppGroup apps.",
          "type": "string"
        }
      },
      "description": "Response for [GetAppGroupApp].[AppGroupApps.GetAppGroupApp], [CreateAppGroupAppRequest].[AppGroupApp.CreateAppGroupAppRequest] and [DeleteAppGroupApp].[AppGroupApp.DeleteAppGroupApp]"
    },
    "GoogleCloudApigeeV1Metadata": {
      "properties": {
        "notices": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of additional information such as data source, if result was truncated. For example: ``` \"notices\": [ \"Source:Postgres\", \"PG Host:uappg0rw.e2e.apigeeks.net\", \"query served by:4b64601e-40de-4eb1-bfb9-eeee7ac929ed\", \"Table used: edge.api.uapgroup2.agg_api\" ]```"
        },
        "errors": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of error messages as strings."
        }
      },
      "description": "Encapsulates additional information about query execution.",
      "id": "GoogleCloudApigeeV1Metadata",
      "type": "object"
    },
    "GoogleCloudApigeeV1ListExportsResponse": {
      "properties": {
        "exports": {
          "items": {
            "$ref": "GoogleCloudApigeeV1Export"
          },
          "type": "array",
          "description": "Details of the export jobs."
        }
      },
      "id": "GoogleCloudApigeeV1ListExportsResponse",
      "description": "The response for ListExports",
      "type": "object"
    },
    "GoogleTypeTimeOfDay": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "properties": {
        "minutes": {
          "type": "integer",
          "description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.",
          "format": "int32"
        },
        "nanos": {
          "description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.",
          "type": "integer",
          "format": "int32"
        },
        "hours": {
          "description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.",
          "type": "integer",
          "format": "int32"
        },
        "seconds": {
          "description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.",
          "type": "integer",
          "format": "int32"
        }
      },
      "type": "object",
      "id": "GoogleTypeTimeOfDay"
    },
    "GoogleCloudApigeeV1AdjustAppGroupBalanceRequest": {
      "properties": {
        "adjustment": {
          "description": "Required. * A positive value of `adjustment` means that that the API provider wants to adjust the balance for an under-charged AppGroup i.e. the balance of the AppGroup will decrease. * A negative value of `adjustment` is not supported. Use credit balance API instead.",
          "$ref": "GoogleTypeMoney"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1AdjustAppGroupBalanceRequest",
      "description": "Request for AdjustAppGroupBalance."
    },
    "GoogleCloudApigeeV1Property": {
      "id": "GoogleCloudApigeeV1Property",
      "description": "A single property entry in the Properties message.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The property key"
        },
        "value": {
          "type": "string",
          "description": "The property value"
        }
      }
    },
    "GoogleCloudApigeeV1Reference": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Required. The resource id of this reference. Values must match the regular expression [\\w\\s\\-.]+."
        },
        "description": {
          "description": "Optional. A human-readable description of this reference.",
          "type": "string"
        },
        "resourceType": {
          "description": "The type of resource referred to by this reference. Valid values are 'KeyStore' or 'TrustStore'.",
          "type": "string"
        },
        "refers": {
          "description": "Required. The id of the resource to which this reference refers. Must be the id of a resource that exists in the parent environment and is of the given resource_type.",
          "type": "string"
        }
      },
      "description": "A Reference configuration. References must refer to a keystore that also exists in the parent environment.",
      "id": "GoogleCloudApigeeV1Reference",
      "type": "object"
    },
    "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsResponse": {
      "properties": {
        "securityAssessmentResults": {
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityAssessmentResult"
          },
          "type": "array",
          "description": "Default sort order is by resource name in alphabetic order."
        },
        "nextPageToken": {
          "description": "A token that can be sent as `page_token` to retrieve the next page. If this field is blank, there are no subsequent pages.",
          "type": "string"
        },
        "assessmentTime": {
          "type": "string",
          "description": "The time of the assessment api call.",
          "format": "google-datetime"
        }
      },
      "description": "Response for BatchComputeSecurityAssessmentResults.",
      "id": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsResponse",
      "type": "object"
    },
    "GoogleCloudApigeeV1GetAsyncQueryResultUrlResponse": {
      "description": "The response for GetAsyncQueryResultUrl",
      "id": "GoogleCloudApigeeV1GetAsyncQueryResultUrlResponse",
      "type": "object",
      "properties": {
        "urls": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1GetAsyncQueryResultUrlResponseURLInfo"
          },
          "description": "The list of Signed URLs generated by the CreateAsyncQuery request"
        }
      }
    },
    "GoogleCloudApigeeV1DebugSession": {
      "type": "object",
      "properties": {
        "timeout": {
          "format": "int64",
          "type": "string",
          "description": "Optional. The time in seconds after which this DebugSession should end. This value will override the value in query param, if both are provided."
        },
        "createTime": {
          "description": "Output only. The first transaction creation timestamp, recorded by UAP.",
          "readOnly": true,
          "type": "string",
          "format": "google-datetime"
        },
        "name": {
          "description": "A unique ID for this DebugSession.",
          "type": "string"
        },
        "count": {
          "type": "integer",
          "format": "int32",
          "description": "Optional. The number of request to be traced. Min = 1, Max = 15, Default = 10."
        },
        "tracesize": {
          "format": "int32",
          "description": "Optional. The maximum number of bytes captured from the response payload. Min = 0, Max = 5120, Default = 5120.",
          "type": "integer"
        },
        "validity": {
          "type": "integer",
          "format": "int32",
          "description": "Optional. The length of time, in seconds, that this debug session is valid, starting from when it's received in the control plane. Min = 1, Max = 15, Default = 10."
        },
        "filter": {
          "type": "string",
          "description": "Optional. A conditional statement which is evaluated against the request message to determine if it should be traced. Syntax matches that of on API Proxy bundle flow Condition."
        }
      },
      "id": "GoogleCloudApigeeV1DebugSession"
    },
    "GoogleCloudApigeeV1AsyncQueryResultView": {
      "id": "GoogleCloudApigeeV1AsyncQueryResultView",
      "properties": {
        "error": {
          "description": "Error message when there is a failure.",
          "type": "string"
        },
        "rows": {
          "description": "Rows of query result. Each row is a JSON object. Example: {sum(message_count): 1, developer_app: \"(not set)\",…}",
          "items": {
            "type": "any"
          },
          "type": "array"
        },
        "code": {
          "format": "int32",
          "description": "Error code when there is a failure.",
          "type": "integer"
        },
        "metadata": {
          "description": "Metadata contains information like metrics, dimenstions etc of the AsyncQuery.",
          "$ref": "GoogleCloudApigeeV1QueryMetadata"
        },
        "state": {
          "description": "State of retrieving ResultView.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1SecurityActionsConfig": {
      "id": "GoogleCloudApigeeV1SecurityActionsConfig",
      "description": "SecurityActionsConfig reflects the current state of the SecurityActions feature. This is a singleton resource: https://google.aip.dev/156",
      "properties": {
        "enabled": {
          "description": "The flag that controls whether this feature is enabled. This is `unset` by default. When this flag is `false`, even if individual rules are enabled, no SecurityActions will be enforced.",
          "type": "boolean"
        },
        "name": {
          "type": "string",
          "description": "This is a singleton resource, the name will always be set by SecurityActions and any user input will be ignored. The name is always: `organizations/{org}/environments/{env}/security_actions_config`"
        },
        "updateTime": {
          "format": "google-datetime",
          "readOnly": true,
          "type": "string",
          "description": "Output only. The update time for configuration."
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1ReferenceConfig": {
      "id": "GoogleCloudApigeeV1ReferenceConfig",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the reference in the following format: `organizations/{org}/environments/{env}/references/{reference}`"
        },
        "resourceName": {
          "description": "Name of the referenced resource in the following format: `organizations/{org}/environments/{env}/keystores/{keystore}` Only references to keystore resources are supported.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1ConfigVersion": {
      "properties": {
        "majorVersion": {
          "description": "Major version of the API proxy configuration schema.",
          "format": "int32",
          "type": "integer"
        },
        "minorVersion": {
          "type": "integer",
          "format": "int32",
          "description": "Minor version of the API proxy configuration schema."
        }
      },
      "type": "object",
      "description": "Version of the API proxy configuration schema. Currently, only 4.0 is supported.",
      "id": "GoogleCloudApigeeV1ConfigVersion"
    },
    "GoogleCloudApigeeV1ListRatePlansResponse": {
      "type": "object",
      "id": "GoogleCloudApigeeV1ListRatePlansResponse",
      "properties": {
        "ratePlans": {
          "items": {
            "$ref": "GoogleCloudApigeeV1RatePlan"
          },
          "description": "List of rate plans in an organization.",
          "type": "array"
        },
        "nextStartKey": {
          "description": "Value that can be sent as `startKey` to retrieve the next page of content. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      },
      "description": "Response for ListRatePlans."
    },
    "GoogleCloudApigeeV1OptimizedStats": {
      "properties": {
        "Response": {
          "description": "Wraps the `stats` response for JavaScript Optimized Scenario with a response key. For example: ```{ \"Response\": { \"TimeUnit\": [], \"metaData\": { \"errors\": [], \"notices\": [ \"Source:Postgres\", \"Table used: edge.api.aaxgroup001.agg_api\", \"PG Host:ruappg08-ro.production.apigeeks.net\", \"query served by:80c4ebca-6a10-4a2e-8faf-c60c1ee306ca\" ] }, \"resultTruncated\": false, \"stats\": { \"data\": [ { \"identifier\": { \"names\": [ \"apiproxy\" ], \"values\": [ \"sirjee\" ] }, \"metric\": [ { \"env\": \"prod\", \"name\": \"sum(message_count)\", \"values\": [ 36.0 ] }, { \"env\": \"prod\", \"name\": \"sum(is_error)\", \"values\": [ 36.0 ] } ] } ] } } }```",
          "$ref": "GoogleCloudApigeeV1OptimizedStatsResponse"
        }
      },
      "id": "GoogleCloudApigeeV1OptimizedStats",
      "type": "object",
      "description": "Encapsulates a response format for JavaScript Optimized Scenario."
    },
    "GoogleCloudApigeeV1PodStatus": {
      "properties": {
        "statusCode": {
          "type": "string",
          "description": "Code associated with the deployment status."
        },
        "podName": {
          "description": "Name of the pod which is reporting the status.",
          "type": "string"
        },
        "deploymentStatus": {
          "type": "string",
          "description": "Status of the deployment. Valid values include: - `deployed`: Successful. - `error` : Failed. - `pending` : Pod has not yet reported on the deployment."
        },
        "deploymentStatusTime": {
          "description": "Time the deployment status was reported in milliseconds since epoch.",
          "type": "string",
          "format": "int64"
        },
        "appVersion": {
          "type": "string",
          "description": "Version of the application running in the pod."
        },
        "deploymentTime": {
          "type": "string",
          "format": "int64",
          "description": "Time the proxy was deployed in milliseconds since epoch."
        },
        "podStatus": {
          "description": "Overall status of the pod (not this specific deployment). Valid values include: - `active`: Up to date. - `stale` : Recently out of date. Pods that have not reported status in a long time are excluded from the output.",
          "type": "string"
        },
        "statusCodeDetails": {
          "type": "string",
          "description": "Human-readable message associated with the status code."
        },
        "podStatusTime": {
          "format": "int64",
          "type": "string",
          "description": "Time the pod status was reported in milliseconds since epoch."
        }
      },
      "id": "GoogleCloudApigeeV1PodStatus",
      "type": "object"
    },
    "GoogleProtobufEmpty": {
      "type": "object",
      "properties": {},
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "id": "GoogleProtobufEmpty"
    },
    "GoogleCloudApigeeV1QueryMetadata": {
      "id": "GoogleCloudApigeeV1QueryMetadata",
      "type": "object",
      "properties": {
        "metrics": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Metrics of the AsyncQuery. Example: [\"name:message_count,func:sum,alias:sum_message_count\"]"
        },
        "timeUnit": {
          "type": "string",
          "description": "Query GroupBy time unit."
        },
        "startTimestamp": {
          "type": "string",
          "description": "Start timestamp of the query range."
        },
        "dimensions": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Dimensions of the AsyncQuery."
        },
        "endTimestamp": {
          "description": "End timestamp of the query range.",
          "type": "string"
        },
        "outputFormat": {
          "type": "string",
          "description": "Output format."
        }
      }
    },
    "GoogleCloudApigeeV1ListArchiveDeploymentsResponse": {
      "id": "GoogleCloudApigeeV1ListArchiveDeploymentsResponse",
      "description": "Response for ListArchiveDeployments method.",
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "Page token that you can include in a ListArchiveDeployments request to retrieve the next page. If omitted, no subsequent pages exist."
        },
        "archiveDeployments": {
          "items": {
            "$ref": "GoogleCloudApigeeV1ArchiveDeployment"
          },
          "description": "Archive Deployments in the specified environment.",
          "type": "array"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1ApiDocResponse": {
      "description": "The catalog item resource wrapped with response status, error_code, etc.",
      "id": "GoogleCloudApigeeV1ApiDocResponse",
      "type": "object",
      "properties": {
        "requestId": {
          "description": "Unique ID of the request.",
          "type": "string"
        },
        "data": {
          "description": "The catalog item resource.",
          "$ref": "GoogleCloudApigeeV1ApiDoc"
        },
        "message": {
          "type": "string",
          "description": "Description of the operation."
        },
        "status": {
          "type": "string",
          "description": "Status of the operation."
        },
        "errorCode": {
          "type": "string",
          "description": "Unique error code for the request, if any."
        }
      }
    },
    "GoogleCloudApigeeV1InstanceDeploymentStatusDeployedRevision": {
      "properties": {
        "percentage": {
          "format": "int32",
          "type": "integer",
          "description": "Percentage of MP replicas reporting this revision."
        },
        "revision": {
          "type": "string",
          "description": "API proxy revision reported as deployed."
        }
      },
      "description": "Revisions deployed in the MPs.",
      "type": "object",
      "id": "GoogleCloudApigeeV1InstanceDeploymentStatusDeployedRevision"
    },
    "GoogleCloudApigeeV1SecurityFeedback": {
      "id": "GoogleCloudApigeeV1SecurityFeedback",
      "properties": {
        "feedbackContexts": {
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityFeedbackFeedbackContext"
          },
          "type": "array",
          "description": "Required. One or more attribute/value pairs for constraining the feedback."
        },
        "updateTime": {
          "type": "string",
          "readOnly": true,
          "format": "google-datetime",
          "description": "Output only. The time when this specific feedback id was updated."
        },
        "comment": {
          "type": "string",
          "description": "Optional. Optional text the user can provide for additional, unstructured context."
        },
        "feedbackType": {
          "enumDescriptions": [
            "Unspecified feedback type.",
            "Feedback identifying attributes to be excluded from detections."
          ],
          "type": "string",
          "description": "Required. The type of feedback being submitted.",
          "enum": [
            "FEEDBACK_TYPE_UNSPECIFIED",
            "EXCLUDED_DETECTION"
          ]
        },
        "name": {
          "type": "string",
          "description": "Output only. Identifier. The feedback name is intended to be a system-generated uuid.",
          "readOnly": true
        },
        "createTime": {
          "readOnly": true,
          "format": "google-datetime",
          "type": "string",
          "description": "Output only. The time when this specific feedback id was created."
        },
        "reason": {
          "enum": [
            "REASON_UNSPECIFIED",
            "INTERNAL_SYSTEM",
            "NON_RISK_CLIENT",
            "NAT",
            "PENETRATION_TEST",
            "OTHER"
          ],
          "type": "string",
          "enumDescriptions": [
            "Unspecified reason.",
            "The feedback is created for an internal system.",
            "The feedback is created for a non-risk client.",
            "The feedback is created for to label NAT.",
            "The feedback is created for a penetration test.",
            "The feedback is created for other reasons."
          ],
          "description": "Optional. The reason for the feedback."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. The display name of the feedback."
        }
      },
      "type": "object",
      "description": "Represents a feedback report from an Advanced API Security customer."
    },
    "GoogleCloudApigeeV1ListSecurityProfilesResponse": {
      "description": "Response for ListSecurityProfiles.",
      "type": "object",
      "properties": {
        "securityProfiles": {
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityProfile"
          },
          "type": "array",
          "description": "List of security profiles in the organization. The profiles may be attached or unattached to any environment. This will return latest revision of each profile."
        },
        "nextPageToken": {
          "description": "A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1ListSecurityProfilesResponse"
    },
    "GoogleCloudApigeeV1ComputeEnvironmentScoresRequest": {
      "type": "object",
      "description": "Request for ComputeEnvironmentScores.",
      "properties": {
        "filters": {
          "items": {
            "$ref": "GoogleCloudApigeeV1ComputeEnvironmentScoresRequestFilter"
          },
          "type": "array",
          "description": "Optional. Filters are used to filter scored components. Return all the components if no filter is mentioned. Example: [{ \"scorePath\": \"/org@myorg/envgroup@myenvgroup/env@myenv/proxies/proxy@myproxy/source\" }, { \"scorePath\": \"/org@myorg/envgroup@myenvgroup/env@myenv/proxies/proxy@myproxy/target\", }] This will return components with path: \"/org@myorg/envgroup@myenvgroup/env@myenv/proxies/proxy@myproxy/source\" OR \"/org@myorg/envgroup@myenvgroup/env@myenv/proxies/proxy@myproxy/target\""
        },
        "pageSize": {
          "description": "Optional. The maximum number of subcomponents to be returned in a single page. The service may return fewer than this value. If unspecified, at most 100 subcomponents will be returned in a single page.",
          "type": "integer",
          "format": "int32"
        },
        "timeRange": {
          "$ref": "GoogleTypeInterval",
          "description": "Required. Time range for score calculation. At most 14 days of scores will be returned, and both the start and end dates must be within the last 90 days."
        },
        "pageToken": {
          "description": "Optional. A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1ComputeEnvironmentScoresRequest"
    },
    "GoogleCloudApigeeV1SharedFlow": {
      "type": "object",
      "description": "The metadata describing a shared flow",
      "properties": {
        "space": {
          "type": "string",
          "description": "Optional. The ID of the space associated with this shared flow. Any IAM policies applied to the space will control access to this shared flow. To learn how Spaces can be used to manage resources, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
        },
        "revision": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of revisions of this shared flow."
        },
        "latestRevisionId": {
          "description": "The id of the most recently created revision for this shared flow.",
          "type": "string"
        },
        "name": {
          "description": "The ID of the shared flow.",
          "type": "string"
        },
        "metaData": {
          "description": "Metadata describing the shared flow.",
          "$ref": "GoogleCloudApigeeV1EntityMetadata"
        }
      },
      "id": "GoogleCloudApigeeV1SharedFlow"
    },
    "GoogleCloudApigeeV1MonetizationConfig": {
      "description": "Configuration for the Monetization add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Flag that specifies whether the Monetization add-on is enabled."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1MonetizationConfig"
    },
    "GoogleCloudApigeeV1ListSharedFlowsResponse": {
      "type": "object",
      "id": "GoogleCloudApigeeV1ListSharedFlowsResponse",
      "properties": {
        "sharedFlows": {
          "items": {
            "$ref": "GoogleCloudApigeeV1SharedFlow"
          },
          "type": "array"
        }
      }
    },
    "GoogleCloudApigeeV1QueryTimeSeriesStatsRequest": {
      "id": "GoogleCloudApigeeV1QueryTimeSeriesStatsRequest",
      "type": "object",
      "description": "QueryTimeSeriesStatsRequest represents a query that returns a collection of time series sequences grouped by their values.",
      "properties": {
        "timeRange": {
          "description": "Required. Time range for the stats.",
          "$ref": "GoogleTypeInterval"
        },
        "windowSize": {
          "enum": [
            "WINDOW_SIZE_UNSPECIFIED",
            "MINUTE",
            "HOUR",
            "DAY",
            "MONTH"
          ],
          "description": "Time buckets to group the stats by.",
          "enumDescriptions": [
            "Unspecified window size. Default is 1 hour.",
            "1 Minute window",
            "1 Hour window",
            "1 Day window",
            "1 Month window"
          ],
          "type": "string"
        },
        "timestampOrder": {
          "description": "Order the sequences in increasing or decreasing order of timestamps. Default is descending order of timestamps (latest first).",
          "type": "string",
          "enum": [
            "ORDER_UNSPECIFIED",
            "ASCENDING",
            "DESCENDING"
          ],
          "enumDescriptions": [
            "Unspecified order. Default is Descending.",
            "Ascending sort order.",
            "Descending sort order."
          ]
        },
        "pageToken": {
          "description": "Page token stands for a specific collection of time series sequences.",
          "type": "string"
        },
        "dimensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of dimension names to group the aggregations by. If no dimensions are passed, a single trend line representing the requested metric aggregations grouped by environment is returned."
        },
        "filter": {
          "description": "Filter further on specific dimension values. Follows the same grammar as custom report's filter expressions. Example, apiproxy eq 'foobar'. https://cloud.google.com/apigee/docs/api-platform/analytics/analytics-reference#filters",
          "type": "string"
        },
        "metrics": {
          "items": {
            "$ref": "GoogleCloudApigeeV1MetricAggregation"
          },
          "type": "array",
          "description": "Required. List of metrics and their aggregations."
        },
        "pageSize": {
          "format": "int32",
          "type": "integer",
          "description": "Page size represents the number of time series sequences, one per unique set of dimensions and their values."
        }
      }
    },
    "GoogleCloudApigeeV1SecurityAction": {
      "properties": {
        "state": {
          "enumDescriptions": [
            "The default value. This only exists for forward compatibility. A create request with this value will be rejected.",
            "An ENABLED SecurityAction is actively enforced if the `expiration_time` is in the future.",
            "A disabled SecurityAction is never enforced."
          ],
          "description": "Required. Only an ENABLED SecurityAction is enforced. An ENABLED SecurityAction past its expiration time will not be enforced.",
          "type": "string",
          "enum": [
            "STATE_UNSPECIFIED",
            "ENABLED",
            "DISABLED"
          ]
        },
        "flag": {
          "$ref": "GoogleCloudApigeeV1SecurityActionFlag",
          "description": "Flag a request through if it matches this SecurityAction."
        },
        "updateTime": {
          "format": "google-datetime",
          "description": "Output only. The update time for this SecurityAction. This reflects when this SecurityAction changed states.",
          "type": "string",
          "readOnly": true
        },
        "expireTime": {
          "description": "The expiration for this SecurityAction.",
          "format": "google-datetime",
          "type": "string"
        },
        "deny": {
          "description": "Deny a request through if it matches this SecurityAction.",
          "$ref": "GoogleCloudApigeeV1SecurityActionDeny"
        },
        "description": {
          "type": "string",
          "description": "Optional. An optional user provided description of the SecurityAction."
        },
        "name": {
          "description": "Immutable. This field is ignored during creation as per AIP-133. Please set the `security_action_id` field in the CreateSecurityActionRequest when creating a new SecurityAction. Format: organizations/{org}/environments/{env}/securityActions/{security_action}",
          "type": "string"
        },
        "allow": {
          "$ref": "GoogleCloudApigeeV1SecurityActionAllow",
          "description": "Allow a request through if it matches this SecurityAction."
        },
        "createTime": {
          "readOnly": true,
          "description": "Output only. The create time for this SecurityAction.",
          "type": "string",
          "format": "google-datetime"
        },
        "apiProxies": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Optional. If unset, this would apply to all proxies in the environment. If set, this action is enforced only if at least one proxy in the repeated list is deployed at the time of enforcement. If set, several restrictions are enforced on SecurityActions. There can be at most 100 enabled actions with proxies set in an env. Several other restrictions apply on conditions and are detailed later."
        },
        "ttl": {
          "format": "google-duration",
          "description": "Input only. The TTL for this SecurityAction.",
          "type": "string"
        },
        "conditionConfig": {
          "description": "Required. A valid SecurityAction must contain at least one condition.",
          "$ref": "GoogleCloudApigeeV1SecurityActionConditionConfig"
        }
      },
      "id": "GoogleCloudApigeeV1SecurityAction",
      "type": "object",
      "description": "A SecurityAction is rule that can be enforced at an environment level. The result is one of: - A denied API call - An explicitly allowed API call - A flagged API call (HTTP headers added before the target receives it) At least one condition is required to create a SecurityAction."
    },
    "GoogleCloudApigeeV1MoveApiProxyRequest": {
      "id": "GoogleCloudApigeeV1MoveApiProxyRequest",
      "properties": {
        "space": {
          "type": "string",
          "description": "Optional. Resource ID of the space to move the proxy to. If unspecified, the proxy will be moved to the organization level."
        }
      },
      "type": "object",
      "description": "Moves an API Proxy to a different Space."
    },
    "GoogleCloudApigeeV1OperationGroup": {
      "properties": {
        "operationConfigType": {
          "description": "Flag that specifes whether the configuration is for Apigee API proxy or a remote service. Valid values include `proxy` or `remoteservice`. Defaults to `proxy`. Set to `proxy` when Apigee API proxies are associated with the API product. Set to `remoteservice` when non-Apigee proxies like Istio-Envoy are associated with the API product.",
          "type": "string"
        },
        "operationConfigs": {
          "items": {
            "$ref": "GoogleCloudApigeeV1OperationConfig"
          },
          "description": "Required. List of operation configurations for either Apigee API proxies or other remote services that are associated with this API product.",
          "type": "array"
        }
      },
      "id": "GoogleCloudApigeeV1OperationGroup",
      "description": "List of operation configuration details associated with Apigee API proxies or remote services. Remote services are non-Apigee proxies, such as Istio-Envoy.",
      "type": "object"
    },
    "GoogleCloudApigeeV1DatastoreConfig": {
      "type": "object",
      "properties": {
        "datasetName": {
          "type": "string",
          "description": "BigQuery dataset name Required for `bigquery` target_type."
        },
        "projectId": {
          "description": "Required. Google Cloud project in which the datastore exists",
          "type": "string"
        },
        "tablePrefix": {
          "description": "Prefix of BigQuery table Required for `bigquery` target_type.",
          "type": "string"
        },
        "bucketName": {
          "type": "string",
          "description": "Name of the Cloud Storage bucket. Required for `gcs` target_type."
        },
        "path": {
          "type": "string",
          "description": "Path of Cloud Storage bucket Required for `gcs` target_type."
        }
      },
      "id": "GoogleCloudApigeeV1DatastoreConfig",
      "description": "Configuration detail for datastore"
    },
    "GoogleCloudApigeeV1GraphQLOperationGroup": {
      "description": "List of graphQL operation configuration details associated with Apigee API proxies or remote services. Remote services are non-Apigee proxies, such as Istio-Envoy.",
      "properties": {
        "operationConfigType": {
          "description": "Flag that specifies whether the configuration is for Apigee API proxy or a remote service. Valid values include `proxy` or `remoteservice`. Defaults to `proxy`. Set to `proxy` when Apigee API proxies are associated with the API product. Set to `remoteservice` when non-Apigee proxies like Istio-Envoy are associated with the API product.",
          "type": "string"
        },
        "operationConfigs": {
          "items": {
            "$ref": "GoogleCloudApigeeV1GraphQLOperationConfig"
          },
          "type": "array",
          "description": "Required. List of operation configurations for either Apigee API proxies or other remote services that are associated with this API product."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1GraphQLOperationGroup"
    },
    "GoogleCloudApigeeV1RoutingRule": {
      "type": "object",
      "properties": {
        "basepath": {
          "description": "URI path prefix used to route to the specified environment. May contain one or more wildcards. For example, path segments consisting of a single `*` character will match any string.",
          "type": "string"
        },
        "receiver": {
          "description": "The resource name of the proxy revision that is receiving this basepath in the following format: `organizations/{org}/apis/{api}/revisions/{rev}`. This field is omitted from the IngressConfig unless the GetDeployedIngressConfig API is called with view=FULL.",
          "type": "string"
        },
        "updateTime": {
          "description": "The unix timestamp when this rule was updated. This is updated whenever env_group_revision is updated. This field is omitted from the IngressConfig unless the GetDeployedIngressConfig API is called with view=FULL.",
          "type": "string",
          "format": "google-datetime"
        },
        "envGroupRevision": {
          "description": "The env group config revision_id when this rule was added or last updated. This value is set when the rule is created and will only update if the the environment_id changes. It is used to determine if the runtime is up to date with respect to this rule. This field is omitted from the IngressConfig unless the GetDeployedIngressConfig API is called with view=FULL.",
          "type": "string",
          "format": "int64"
        },
        "otherTargets": {
          "description": "Conflicting targets, which will be resource names specifying either deployment groups or environments.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "environment": {
          "type": "string",
          "description": "Name of an environment bound to the environment group in the following format: `organizations/{org}/environments/{env}`. Only one of environment or deployment_group will be set."
        },
        "deploymentGroup": {
          "type": "string",
          "description": "Name of a deployment group in an environment bound to the environment group in the following format: `organizations/{org}/environment/{env}/deploymentGroups/{group}` Only one of environment or deployment_group will be set."
        }
      },
      "id": "GoogleCloudApigeeV1RoutingRule"
    },
    "GoogleCloudApigeeV1ReportInstanceStatusResponse": {
      "id": "GoogleCloudApigeeV1ReportInstanceStatusResponse",
      "description": "Placeholder for future enhancements to status reporting protocol",
      "properties": {},
      "type": "object"
    },
    "GoogleCloudApigeeV1ListTraceConfigOverridesResponse": {
      "id": "GoogleCloudApigeeV1ListTraceConfigOverridesResponse",
      "description": "Response for ListTraceConfigOverrides.",
      "properties": {
        "traceConfigOverrides": {
          "items": {
            "$ref": "GoogleCloudApigeeV1TraceConfigOverride"
          },
          "description": "List all trace configuration overrides in an environment.",
          "type": "array"
        },
        "nextPageToken": {
          "description": "Token value that can be passed as `page_token` to retrieve the next page of content.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1ListApiProductsResponse": {
      "id": "GoogleCloudApigeeV1ListApiProductsResponse",
      "type": "object",
      "properties": {
        "apiProduct": {
          "items": {
            "$ref": "GoogleCloudApigeeV1ApiProduct"
          },
          "type": "array",
          "description": "Lists all API product names defined for an organization."
        }
      }
    },
    "GoogleCloudApigeeV1SyncAuthorization": {
      "type": "object",
      "properties": {
        "etag": {
          "type": "string",
          "description": "Entity tag (ETag) used for optimistic concurrency control as a way to help prevent simultaneous updates from overwriting each other. For example, when you call [getSyncAuthorization](organizations/getSyncAuthorization) an ETag is returned in the response. Pass that ETag when calling the [setSyncAuthorization](organizations/setSyncAuthorization) to ensure that you are updating the correct version. If you don't pass the ETag in the call to `setSyncAuthorization`, then the existing authorization is overwritten indiscriminately. **Note**: We strongly recommend that you use the ETag in the read-modify-write cycle to avoid race conditions.",
          "format": "byte"
        },
        "identities": {
          "description": "Required. Array of service accounts to grant access to control plane resources, each specified using the following format: `serviceAccount:` service-account-name. The service-account-name is formatted like an email address. For example: `my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com` You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one. The service accounts must have **Apigee Synchronizer Manager** role. See also [Create service accounts](https://cloud.google.com/apigee/docs/hybrid/latest/sa-about#create-the-service-accounts).",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "id": "GoogleCloudApigeeV1SyncAuthorization"
    },
    "GoogleCloudApigeeV1DeveloperMonetizationConfig": {
      "properties": {
        "billingType": {
          "enum": [
            "BILLING_TYPE_UNSPECIFIED",
            "PREPAID",
            "POSTPAID"
          ],
          "enumDescriptions": [
            "The default/unset value.",
            "Developer pays in advance for the use of APIs and the charged amount is deducted from their account balance.",
            "Developer does not maintain an account balance. The API provider bills the developer for API usage."
          ],
          "type": "string",
          "description": "Billing type."
        }
      },
      "id": "GoogleCloudApigeeV1DeveloperMonetizationConfig",
      "type": "object",
      "description": "Monetization configuration for the developer."
    },
    "GoogleCloudApigeeV1Quota": {
      "properties": {
        "limit": {
          "type": "string",
          "description": "Required. Upper limit allowed for the time interval and time unit specified. Requests exceeding this limit will be rejected."
        },
        "interval": {
          "description": "Required. Time interval over which the number of request messages is calculated.",
          "type": "string"
        },
        "timeUnit": {
          "description": "Time unit defined for the `interval`. Valid values include `minute`, `hour`, `day`, or `month`. If `limit` and `interval` are valid, the default value is `hour`; otherwise, the default is null.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Quota contains the essential parameters needed that can be applied on the resources, methods, API source combination associated with this API product. While Quota is optional, setting it prevents requests from exceeding the provisioned parameters.",
      "id": "GoogleCloudApigeeV1Quota"
    },
    "GoogleCloudApigeeV1ListSecurityProfileRevisionsResponse": {
      "id": "GoogleCloudApigeeV1ListSecurityProfileRevisionsResponse",
      "type": "object",
      "description": "Response for ListSecurityProfileRevisions.",
      "properties": {
        "securityProfiles": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityProfile"
          },
          "description": "List of security profile revisions. The revisions may be attached or unattached to any environment."
        },
        "nextPageToken": {
          "description": "A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1AppGroupSubscription": {
      "properties": {
        "startTime": {
          "type": "string",
          "description": "Output only. Time when the API product subscription starts in milliseconds since epoch.",
          "readOnly": true,
          "format": "int64"
        },
        "createdAt": {
          "readOnly": true,
          "description": "Output only. Time when the API product subscription was created in milliseconds since epoch.",
          "format": "int64",
          "type": "string"
        },
        "name": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Name of the API product subscription."
        },
        "apiproduct": {
          "description": "Required. Name of the API product for which the appgroup is purchasing a subscription.",
          "type": "string"
        },
        "endTime": {
          "format": "int64",
          "description": "Output only. Time when the API product subscription ends in milliseconds since epoch.",
          "type": "string",
          "readOnly": true
        },
        "lastModifiedAt": {
          "type": "string",
          "format": "int64",
          "description": "Output only. Time when the API product subscription was last modified in milliseconds since epoch.",
          "readOnly": true
        }
      },
      "type": "object",
      "description": "AppGroup Subscription details.",
      "id": "GoogleCloudApigeeV1AppGroupSubscription"
    },
    "GoogleCloudApigeeV1SecurityAssessmentResult": {
      "properties": {
        "error": {
          "$ref": "GoogleRpcStatus",
          "description": "The error status if scoring fails."
        },
        "createTime": {
          "description": "The time of the assessment of this resource. This could lag behind `assessment_time` due to caching within the backend.",
          "format": "google-datetime",
          "type": "string"
        },
        "resource": {
          "$ref": "GoogleCloudApigeeV1SecurityAssessmentResultResource",
          "description": "The assessed resource."
        },
        "scoringResult": {
          "description": "The result of the assessment.",
          "$ref": "GoogleCloudApigeeV1SecurityAssessmentResultScoringResult"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1SecurityAssessmentResult",
      "description": "The security assessment result for one resource."
    },
    "GoogleCloudApigeeV1ResourceStatus": {
      "description": "The status of a resource loaded in the runtime.",
      "properties": {
        "resource": {
          "type": "string",
          "description": "The resource name. Currently only two resources are supported: EnvironmentGroup - organizations/{org}/envgroups/{envgroup} EnvironmentConfig - organizations/{org}/environments/{environment}/deployedConfig"
        },
        "totalReplicas": {
          "type": "integer",
          "format": "int32",
          "description": "The total number of replicas that should have this resource."
        },
        "uid": {
          "description": "The uid of the resource. In the unexpected case that the instance has multiple uids for the same name, they should be reported under separate ResourceStatuses.",
          "type": "string"
        },
        "revisions": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1RevisionStatus"
          },
          "description": "Revisions of the resource currently deployed in the instance."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1ResourceStatus"
    },
    "GoogleCloudApigeeV1ExportRequest": {
      "type": "object",
      "properties": {
        "description": {
          "description": "Optional. Description of the export job.",
          "type": "string"
        },
        "name": {
          "description": "Required. Display name of the export job.",
          "type": "string"
        },
        "dateRange": {
          "description": "Required. Date range of the data to export.",
          "$ref": "GoogleCloudApigeeV1DateRange"
        },
        "outputFormat": {
          "description": "Optional. Output format of the export. Valid values include: `csv` or `json`. Defaults to `json`. Note: Configure the delimiter for CSV output using the `csvDelimiter` property.",
          "type": "string"
        },
        "datastoreName": {
          "description": "Required. Name of the preconfigured datastore.",
          "type": "string"
        },
        "csvDelimiter": {
          "type": "string",
          "description": "Optional. Delimiter used in the CSV file, if `outputFormat` is set to `csv`. Defaults to the `,` (comma) character. Supported delimiter characters include comma (`,`), pipe (`|`), and tab (`\\t`)."
        }
      },
      "description": "Request body for [CreateExportRequest]",
      "id": "GoogleCloudApigeeV1ExportRequest"
    },
    "GoogleCloudApigeeV1SecurityAssessmentResultScoringResult": {
      "id": "GoogleCloudApigeeV1SecurityAssessmentResultScoringResult",
      "properties": {
        "failedAssessmentPerWeight": {
          "additionalProperties": {
            "format": "int32",
            "type": "integer"
          },
          "description": "The number of failed assessments grouped by its weight. Keys are one of the following: \"MAJOR\", \"MODERATE\", \"MINOR\".",
          "type": "object"
        },
        "score": {
          "type": "integer",
          "format": "int32",
          "description": "The security score of the assessment."
        },
        "assessmentRecommendations": {
          "type": "object",
          "additionalProperties": {
            "$ref": "GoogleCloudApigeeV1SecurityAssessmentResultScoringResultAssessmentRecommendation"
          },
          "description": "The recommendations of the assessment. The key is the \"name\" of the assessment (not display_name), and the value are the recommendations."
        },
        "severity": {
          "enum": [
            "SEVERITY_UNSPECIFIED",
            "LOW",
            "MEDIUM",
            "HIGH",
            "MINIMAL"
          ],
          "type": "string",
          "enumDescriptions": [
            "Severity is not defined.",
            "Severity is low.",
            "Severity is medium.",
            "Severity is high.",
            "Severity is minimal"
          ]
        },
        "dataUpdateTime": {
          "type": "string",
          "description": "The time when resource data was last fetched for this resource. This time may be different than when the resource was actually updated due to lag in data collection.",
          "format": "google-datetime"
        }
      },
      "type": "object",
      "description": "The result of the assessment."
    },
    "GoogleCloudApigeeV1ApiProductRef": {
      "id": "GoogleCloudApigeeV1ApiProductRef",
      "properties": {
        "status": {
          "type": "string",
          "description": "Status of the API product. Valid values are `approved` or `revoked`."
        },
        "apiproduct": {
          "description": "Name of the API product.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleTypeInterval": {
      "id": "GoogleTypeInterval",
      "properties": {
        "endTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end."
        },
        "startTime": {
          "format": "google-datetime",
          "description": "Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Represents a time interval, encoded as a Timestamp start (inclusive) and a Timestamp end (exclusive). The start must be less than or equal to the end. When the start equals the end, the interval is empty (matches no time). When both start and end are unspecified, the interval matches any time."
    },
    "GoogleCloudApigeeV1ListSecurityActionsResponse": {
      "properties": {
        "securityActions": {
          "type": "array",
          "description": "The SecurityActions for the specified environment.",
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityAction"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        }
      },
      "id": "GoogleCloudApigeeV1ListSecurityActionsResponse",
      "type": "object",
      "description": "Contains a list of SecurityActions in response to a ListSecurityActionRequest."
    },
    "GoogleCloudApigeeV1AsyncQueryResult": {
      "type": "object",
      "properties": {
        "self": {
          "type": "string",
          "description": "Self link of the query results. Example: `/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result` or following format if query is running at host level: `/organizations/myorg/hostQueries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result`"
        },
        "expires": {
          "description": "Query result will be unaccessable after this time.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1AsyncQueryResult"
    },
    "GoogleCloudApigeeV1ListSpacesResponse": {
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        },
        "spaces": {
          "type": "array",
          "description": "List of Apigee organization spaces.",
          "items": {
            "$ref": "GoogleCloudApigeeV1Space"
          }
        }
      },
      "type": "object",
      "description": "A response to a ListSpaces request containing the list of organization spaces and a page token for the next page.",
      "id": "GoogleCloudApigeeV1ListSpacesResponse"
    },
    "GoogleCloudApigeeV1ListEnvironmentResourcesResponse": {
      "description": "Response for ListEnvironmentResources",
      "properties": {
        "resourceFile": {
          "description": "List of resources files.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1ResourceFile"
          }
        }
      },
      "id": "GoogleCloudApigeeV1ListEnvironmentResourcesResponse",
      "type": "object"
    },
    "GoogleCloudApigeeV1SecurityReportQuery": {
      "id": "GoogleCloudApigeeV1SecurityReportQuery",
      "properties": {
        "csvDelimiter": {
          "description": "Delimiter used in the CSV file, if `outputFormat` is set to `csv`. Defaults to the `,` (comma) character. Supported delimiter characters include comma (`,`), pipe (`|`), and tab (`\\t`).",
          "type": "string"
        },
        "displayName": {
          "type": "string",
          "description": "Security Report display name which users can specify."
        },
        "metrics": {
          "description": "A list of Metrics.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityReportQueryMetric"
          }
        },
        "envgroupHostname": {
          "description": "Hostname needs to be specified if query intends to run at host level. This field is only allowed when query is submitted by CreateHostSecurityReport where analytics data will be grouped by organization and hostname.",
          "type": "string"
        },
        "mimeType": {
          "type": "string",
          "description": "Valid values include: `csv` or `json`. Defaults to `json`. Note: Configure the delimiter for CSV output using the csvDelimiter property."
        },
        "reportDefinitionId": {
          "description": "Report Definition ID.",
          "type": "string"
        },
        "timeRange": {
          "description": "Required. Time range for the query. Can use the following predefined strings to specify the time range: `last60minutes` `last24hours` `last7days` Or, specify the timeRange as a structure describing start and end timestamps in the ISO format: yyyy-mm-ddThh:mm:ssZ. Example: \"timeRange\": { \"start\": \"2018-07-29T00:13:00Z\", \"end\": \"2018-08-01T00:18:00Z\" }",
          "type": "any"
        },
        "dimensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of dimensions. https://docs.apigee.com/api-platform/analytics/analytics-reference#dimensions"
        },
        "groupByTimeUnit": {
          "type": "string",
          "description": "Time unit used to group the result set. Valid values include: second, minute, hour, day, week, or month. If a query includes groupByTimeUnit, then the result is an aggregation based on the specified time unit and the resultant timestamp does not include milliseconds precision. If a query omits groupByTimeUnit, then the resultant timestamp includes milliseconds precision."
        },
        "limit": {
          "description": "Maximum number of rows that can be returned in the result.",
          "format": "int32",
          "type": "integer"
        },
        "filter": {
          "description": "Boolean expression that can be used to filter data. Filter expressions can be combined using AND/OR terms and should be fully parenthesized to avoid ambiguity. See Analytics metrics, dimensions, and filters reference https://docs.apigee.com/api-platform/analytics/analytics-reference for more information on the fields available to filter on. For more information on the tokens that you use to build filter expressions, see Filter expression syntax. https://docs.apigee.com/api-platform/analytics/asynch-reports-api#filter-expression-syntax",
          "type": "string"
        }
      },
      "description": "Body structure when user makes a request to create a security report.",
      "type": "object"
    },
    "GoogleCloudApigeeV1ScoreComponentRecommendationActionActionContext": {
      "description": "Action context are all the relevant details for the action.",
      "properties": {
        "documentationLink": {
          "description": "Documentation link for the action.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1ScoreComponentRecommendationActionActionContext",
      "type": "object"
    },
    "GoogleCloudApigeeV1EnvironmentClientIPResolutionConfigHeaderIndexAlgorithm": {
      "properties": {
        "ipHeaderIndex": {
          "type": "integer",
          "format": "int32",
          "description": "Required. The index of the ip in the header. Positive indices 0, 1, 2, 3 chooses indices from the left (first ips) Negative indices -1, -2, -3 chooses indices from the right (last ips)"
        },
        "ipHeaderName": {
          "description": "Required. The name of the header to extract the client ip from.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1EnvironmentClientIPResolutionConfigHeaderIndexAlgorithm",
      "type": "object",
      "description": "Resolves the client ip based on a custom header."
    },
    "GoogleCloudApigeeV1ResourceFiles": {
      "id": "GoogleCloudApigeeV1ResourceFiles",
      "description": "List of resource files.",
      "type": "object",
      "properties": {
        "resourceFile": {
          "description": "List of resource files.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1ResourceFile"
          }
        }
      }
    },
    "GoogleCloudApigeeV1DeploymentChangeReportRoutingDeployment": {
      "id": "GoogleCloudApigeeV1DeploymentChangeReportRoutingDeployment",
      "description": "Tuple representing a base path and the deployment containing it.",
      "properties": {
        "apiProxy": {
          "type": "string",
          "description": "Name of the deployed API proxy revision containing the base path."
        },
        "environment": {
          "description": "Name of the environment in which the proxy is deployed.",
          "type": "string"
        },
        "basepath": {
          "description": "Base path receiving traffic.",
          "type": "string"
        },
        "revision": {
          "description": "Name of the deployed API proxy revision containing the base path.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1Operation": {
      "type": "object",
      "id": "GoogleCloudApigeeV1Operation",
      "description": "Represents the pairing of REST resource path and the actions (verbs) allowed on the resource path.",
      "properties": {
        "resource": {
          "type": "string",
          "description": "Required. REST resource path associated with the API proxy or remote service."
        },
        "methods": {
          "description": "methods refers to the REST verbs as in https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html. When none specified, all verb types are allowed.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "GoogleCloudApigeeV1KeystoreConfig": {
      "type": "object",
      "id": "GoogleCloudApigeeV1KeystoreConfig",
      "properties": {
        "name": {
          "description": "Resource name in the following format: `organizations/{org}/environments/{env}/keystores/{keystore}`",
          "type": "string"
        },
        "aliases": {
          "description": "Aliases in the keystore.",
          "items": {
            "$ref": "GoogleCloudApigeeV1AliasRevisionConfig"
          },
          "type": "array"
        }
      }
    },
    "GoogleCloudApigeeV1ListDeploymentsResponse": {
      "properties": {
        "deployments": {
          "description": "List of deployments.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Deployment"
          }
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1ListDeploymentsResponse"
    },
    "GoogleCloudApigeeV1SecurityReportQueryMetric": {
      "description": "Metric of the Query",
      "properties": {
        "alias": {
          "description": "Alias for the metric. Alias will be used to replace metric name in query results.",
          "type": "string"
        },
        "operator": {
          "description": "One of `+`, `-`, `/`, `%`, `*`.",
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "Required. Metric name."
        },
        "aggregationFunction": {
          "description": "Aggregation function: avg, min, max, or sum.",
          "type": "string"
        },
        "value": {
          "type": "string",
          "description": "Operand value should be provided when operator is set."
        }
      },
      "id": "GoogleCloudApigeeV1SecurityReportQueryMetric",
      "type": "object"
    },
    "GoogleCloudApigeeV1ArchiveDeployment": {
      "description": "Archive Deployment information.",
      "id": "GoogleCloudApigeeV1ArchiveDeployment",
      "properties": {
        "createdAt": {
          "description": "Output only. The time at which the Archive Deployment was created in milliseconds since the epoch.",
          "format": "int64",
          "readOnly": true,
          "type": "string"
        },
        "updatedAt": {
          "format": "int64",
          "readOnly": true,
          "type": "string",
          "description": "Output only. The time at which the Archive Deployment was updated in milliseconds since the epoch."
        },
        "name": {
          "type": "string",
          "description": "Name of the Archive Deployment in the following format: `organizations/{org}/environments/{env}/archiveDeployments/{id}`."
        },
        "operation": {
          "description": "Output only. A reference to the LRO that created this Archive Deployment in the following format: `organizations/{org}/operations/{id}`",
          "type": "string",
          "readOnly": true
        },
        "gcsUri": {
          "type": "string",
          "description": "Input only. The Google Cloud Storage signed URL returned from GenerateUploadUrl and used to upload the Archive zip file."
        },
        "labels": {
          "description": "User-supplied key-value pairs used to organize ArchiveDeployments. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store.",
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1TlsInfoConfig": {
      "id": "GoogleCloudApigeeV1TlsInfoConfig",
      "properties": {
        "enabled": {
          "description": "Flag that specifies whether one-way TLS is enabled. Set to `true` to enable one-way TLS.",
          "type": "boolean"
        },
        "enforce": {
          "type": "boolean",
          "description": "Flag that enforces TLS settings"
        },
        "ignoreValidationErrors": {
          "description": "Flag that specifies whether to ignore TLS certificate validation errors. Set to `true` to ignore errors.",
          "type": "boolean"
        },
        "trustStore": {
          "description": "Name of the keystore or keystore reference containing trusted certificates for the server in the following format: `organizations/{org}/environments/{env}/keystores/{keystore}` or `organizations/{org}/environments/{env}/references/{reference}`",
          "type": "string"
        },
        "commonName": {
          "description": "Common name to validate the target server against.",
          "$ref": "GoogleCloudApigeeV1CommonNameConfig"
        },
        "protocols": {
          "description": "List of TLS protocols that are granted access.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "keyAlias": {
          "description": "Name of the alias used for client-side authentication in the following format: `organizations/{org}/environments/{env}/keystores/{keystore}/aliases/{alias}`",
          "type": "string"
        },
        "keyAliasReference": {
          "description": "Reference name and alias pair to use for client-side authentication.",
          "$ref": "GoogleCloudApigeeV1KeyAliasReference"
        },
        "ciphers": {
          "description": "List of ciphers that are granted access.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "clientAuthEnabled": {
          "type": "boolean",
          "description": "Flag that specifies whether client-side authentication is enabled for the target server. Enables two-way TLS."
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1ServiceIssuersMapping": {
      "type": "object",
      "id": "GoogleCloudApigeeV1ServiceIssuersMapping",
      "properties": {
        "emailIds": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of trusted issuer email ids."
        },
        "service": {
          "type": "string",
          "description": "String indicating the Apigee service name."
        }
      }
    },
    "GoogleCloudApigeeV1KeyValueMap": {
      "type": "object",
      "id": "GoogleCloudApigeeV1KeyValueMap",
      "description": "Collection of key/value string pairs.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Required. ID of the key value map."
        },
        "maskedValues": {
          "description": "Optional. Flag that specifies whether entry values will be masked when returned.",
          "type": "boolean"
        },
        "encrypted": {
          "description": "Required. Flag that specifies whether entry values will be encrypted. This field is retained for backward compatibility and the value of encrypted will always be `true`. Apigee X and hybrid do not support unencrypted key value maps.",
          "type": "boolean"
        }
      }
    },
    "GoogleCloudApigeeV1ListAsyncQueriesResponse": {
      "type": "object",
      "id": "GoogleCloudApigeeV1ListAsyncQueriesResponse",
      "description": "The response for ListAsyncQueries.",
      "properties": {
        "queries": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1AsyncQuery"
          },
          "description": "The asynchronous queries belong to requested resource name."
        }
      }
    },
    "GoogleCloudApigeeV1CustomReport": {
      "id": "GoogleCloudApigeeV1CustomReport",
      "type": "object",
      "properties": {
        "dimensions": {
          "description": "This contains the list of dimensions for the report",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "comments": {
          "items": {
            "type": "string"
          },
          "description": "Legacy field: not used. This field contains a list of comments associated with custom report",
          "type": "array"
        },
        "topk": {
          "type": "string",
          "description": "Legacy field: not used. This field contains the top k parameter value for restricting the result"
        },
        "displayName": {
          "description": "This is the display name for the report",
          "type": "string"
        },
        "lastViewedAt": {
          "description": "Output only. Last viewed time of this entity as milliseconds since epoch",
          "readOnly": true,
          "type": "string",
          "format": "int64"
        },
        "createdAt": {
          "format": "int64",
          "description": "Output only. Unix time when the app was created json key: createdAt",
          "type": "string",
          "readOnly": true
        },
        "chartType": {
          "description": "This field contains the chart type for the report",
          "type": "string"
        },
        "properties": {
          "description": "This field contains report properties such as ui metadata etc.",
          "items": {
            "$ref": "GoogleCloudApigeeV1ReportProperty"
          },
          "type": "array"
        },
        "sortByCols": {
          "type": "array",
          "description": "Legacy field: not used much. Contains the list of sort by columns",
          "items": {
            "type": "string"
          }
        },
        "lastModifiedAt": {
          "description": "Output only. Modified time of this entity as milliseconds since epoch. json key: lastModifiedAt",
          "type": "string",
          "format": "int64",
          "readOnly": true
        },
        "name": {
          "description": "Required. Unique identifier for the report T his is a legacy field used to encode custom report unique id",
          "type": "string"
        },
        "tags": {
          "type": "array",
          "description": "Legacy field: not used. This field contains a list of tags associated with custom report",
          "items": {
            "type": "string"
          }
        },
        "environment": {
          "description": "Output only. Environment name",
          "readOnly": true,
          "type": "string"
        },
        "offset": {
          "type": "string",
          "description": "Legacy field: not used. This field contains the offset for the data"
        },
        "sortOrder": {
          "description": "Legacy field: not used much. Contains the sort order for the sort columns",
          "type": "string"
        },
        "organization": {
          "description": "Output only. Organization name",
          "readOnly": true,
          "type": "string"
        },
        "filter": {
          "description": "This field contains the filter expression",
          "type": "string"
        },
        "limit": {
          "type": "string",
          "description": "Legacy field: not used This field contains the limit for the result retrieved"
        },
        "toTime": {
          "type": "string",
          "description": "Legacy field: not used. Contains the end time for the report"
        },
        "fromTime": {
          "type": "string",
          "description": "Legacy field: not used. Contains the from time for the report"
        },
        "metrics": {
          "items": {
            "$ref": "GoogleCloudApigeeV1CustomReportMetric"
          },
          "type": "array",
          "description": "Required. This contains the list of metrics"
        },
        "timeUnit": {
          "description": "This field contains the time unit of aggregation for the report",
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1DeveloperSubscription": {
      "properties": {
        "apiproduct": {
          "description": "Name of the API product for which the developer is purchasing a subscription.",
          "type": "string"
        },
        "endTime": {
          "type": "string",
          "description": "Time when the API product subscription ends in milliseconds since epoch.",
          "format": "int64"
        },
        "name": {
          "description": "Output only. Name of the API product subscription.",
          "type": "string",
          "readOnly": true
        },
        "createdAt": {
          "description": "Output only. Time when the API product subscription was created in milliseconds since epoch.",
          "format": "int64",
          "type": "string",
          "readOnly": true
        },
        "lastModifiedAt": {
          "readOnly": true,
          "format": "int64",
          "description": "Output only. Time when the API product subscription was last modified in milliseconds since epoch.",
          "type": "string"
        },
        "startTime": {
          "format": "int64",
          "type": "string",
          "description": "Time when the API product subscription starts in milliseconds since epoch."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1DeveloperSubscription",
      "description": "Structure of a DeveloperSubscription."
    },
    "GoogleCloudApigeeV1ReportProperty": {
      "id": "GoogleCloudApigeeV1ReportProperty",
      "properties": {
        "value": {
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          },
          "description": "property values",
          "type": "array"
        },
        "property": {
          "type": "string",
          "description": "name of the property"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1PayloadOperationGroup": {
      "description": "List of payload operation configuration details associated with Apigee API proxies. Payload operations enable governance of protocols where operations are embedded in the request body (such as JSON-RPC) rather than defined by the URL path.",
      "id": "GoogleCloudApigeeV1PayloadOperationGroup",
      "type": "object",
      "properties": {
        "operationConfigs": {
          "description": "Required. List of payload operation configurations for Apigee API proxies that are associated with this API product.",
          "items": {
            "$ref": "GoogleCloudApigeeV1PayloadOperationConfig"
          },
          "type": "array"
        }
      }
    },
    "GoogleCloudApigeeV1AdvancedApiOpsConfig": {
      "id": "GoogleCloudApigeeV1AdvancedApiOpsConfig",
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Flag that specifies whether the Advanced API Ops add-on is enabled."
        }
      },
      "description": "Configuration for the Advanced API Ops add-on."
    },
    "GoogleCloudApigeeV1Attribute": {
      "type": "object",
      "id": "GoogleCloudApigeeV1Attribute",
      "properties": {
        "value": {
          "type": "string",
          "description": "Value of the attribute."
        },
        "name": {
          "type": "string",
          "description": "API key of the attribute."
        }
      },
      "description": "Key-value pair to store extra metadata."
    },
    "GoogleCloudApigeeV1ListDeveloperSubscriptionsResponse": {
      "properties": {
        "developerSubscriptions": {
          "description": "List of all subscriptions.",
          "items": {
            "$ref": "GoogleCloudApigeeV1DeveloperSubscription"
          },
          "type": "array"
        },
        "nextStartKey": {
          "description": "Value that can be sent as `startKey` to retrieve the next page of content. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Response for ListDeveloperSubscriptions.",
      "id": "GoogleCloudApigeeV1ListDeveloperSubscriptionsResponse"
    },
    "GoogleCloudApigeeV1SecurityProfileEnvironment": {
      "type": "object",
      "description": "Environment information of attached environments. Scoring an environment is enabled only if it is attached to a security profile.",
      "id": "GoogleCloudApigeeV1SecurityProfileEnvironment",
      "properties": {
        "attachTime": {
          "readOnly": true,
          "format": "google-datetime",
          "type": "string",
          "description": "Output only. Time at which environment was attached to the security profile."
        },
        "environment": {
          "description": "Output only. Name of the environment.",
          "type": "string",
          "readOnly": true
        }
      }
    },
    "GoogleCloudApigeeV1AppGroupBalanceWallet": {
      "id": "GoogleCloudApigeeV1AppGroupBalanceWallet",
      "properties": {
        "lastCreditTime": {
          "format": "int64",
          "readOnly": true,
          "description": "Output only. Time at which the AppGroup last added credit to the account in milliseconds since epoch.",
          "type": "string"
        },
        "balance": {
          "$ref": "GoogleTypeMoney",
          "description": "Current remaining balance of the AppGroup for a particular currency."
        }
      },
      "type": "object",
      "description": "Wallet used to manage an account balance for a particular currency."
    },
    "GoogleLongrunningOperation": {
      "id": "GoogleLongrunningOperation",
      "type": "object",
      "description": "This resource represents a long-running operation that is the result of a network API call.",
      "properties": {
        "metadata": {
          "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          },
          "type": "object"
        },
        "done": {
          "type": "boolean",
          "description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available."
        },
        "name": {
          "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
          "type": "string"
        },
        "error": {
          "$ref": "GoogleRpcStatus",
          "description": "The error result of the operation in case of failure or cancellation."
        },
        "response": {
          "description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
          "type": "object",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          }
        }
      }
    },
    "GoogleCloudApigeeV1OperationMetadata": {
      "description": "Metadata describing an Operation.",
      "type": "object",
      "id": "GoogleCloudApigeeV1OperationMetadata",
      "properties": {
        "progress": {
          "$ref": "GoogleCloudApigeeV1OperationMetadataProgress",
          "description": "Progress of the operation."
        },
        "warnings": {
          "description": "Warnings encountered while executing the operation.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "state": {
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "NOT_STARTED",
            "IN_PROGRESS",
            "FINISHED"
          ],
          "type": "string"
        },
        "operationType": {
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "enum": [
            "OPERATION_TYPE_UNSPECIFIED",
            "INSERT",
            "DELETE",
            "UPDATE"
          ],
          "type": "string"
        },
        "targetResourceName": {
          "type": "string",
          "description": "Name of the resource for which the operation is operating on."
        }
      }
    },
    "GoogleCloudApigeeV1SecurityReportResultMetadata": {
      "id": "GoogleCloudApigeeV1SecurityReportResultMetadata",
      "properties": {
        "self": {
          "type": "string",
          "description": "Self link of the query results. Example: `/organizations/myorg/environments/myenv/securityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result` or following format if query is running at host level: `/organizations/myorg/hostSecurityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result`"
        },
        "expires": {
          "description": "Output only. Expire_time is set to 7 days after report creation. Query result will be unaccessable after this time. Example: \"2021-05-04T13:38:52-07:00\"",
          "readOnly": true,
          "type": "string"
        }
      },
      "description": "Contains informations about the security report results.",
      "type": "object"
    },
    "GoogleCloudApigeeV1ListCustomReportsResponse": {
      "properties": {
        "qualifier": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1CustomReport"
          }
        }
      },
      "id": "GoogleCloudApigeeV1ListCustomReportsResponse",
      "type": "object",
      "description": "This message encapsulates a list of custom report definitions"
    },
    "GoogleCloudApigeeV1OASDocumentation": {
      "id": "GoogleCloudApigeeV1OASDocumentation",
      "properties": {
        "spec": {
          "$ref": "GoogleCloudApigeeV1DocumentationFile",
          "description": "Required. The documentation file contents for the OpenAPI Specification. JSON and YAML file formats are supported."
        },
        "format": {
          "enum": [
            "FORMAT_UNSPECIFIED",
            "YAML",
            "JSON"
          ],
          "description": "Output only. The format of the input specification file contents.",
          "readOnly": true,
          "enumDescriptions": [
            "The format is not available.",
            "YAML format.",
            "JSON format."
          ],
          "type": "string"
        }
      },
      "type": "object",
      "description": "OpenAPI Specification documentation for a catalog item."
    },
    "GoogleCloudApigeeV1SecurityActionFlag": {
      "type": "object",
      "id": "GoogleCloudApigeeV1SecurityActionFlag",
      "description": "The message that should be set in the case of a Flag action.",
      "properties": {
        "headers": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityActionHttpHeader"
          },
          "description": "Optional. A list of HTTP headers to be sent to the target in case of a FLAG SecurityAction. Limit 5 headers per SecurityAction. At least one is mandatory."
        }
      }
    },
    "GoogleApiHttpBody": {
      "description": "Message that represents an arbitrary HTTP body. It should only be used for payload formats that can't be represented as JSON, such as raw binary or an HTML page. This message can be used both in streaming and non-streaming API methods in the request as well as the response. It can be used as a top-level request field, which is convenient if one wants to extract parameters from either the URL or HTTP template into the request fields and also want access to the raw HTTP body. Example: message GetResourceRequest { // A unique request id. string request_id = 1; // The raw HTTP body is bound to this field. google.api.HttpBody http_body = 2; } service ResourceService { rpc GetResource(GetResourceRequest) returns (google.api.HttpBody); rpc UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); } Example with streaming methods: service CaldavService { rpc GetCalendar(stream google.api.HttpBody) returns (stream google.api.HttpBody); rpc UpdateCalendar(stream google.api.HttpBody) returns (stream google.api.HttpBody); } Use of this type only changes how the request and response bodies are handled, all other features will continue to work unchanged.",
      "id": "GoogleApiHttpBody",
      "type": "object",
      "properties": {
        "contentType": {
          "description": "The HTTP Content-Type header value specifying the content type of the body.",
          "type": "string"
        },
        "extensions": {
          "items": {
            "type": "object",
            "additionalProperties": {
              "description": "Properties of the object. Contains field @type with type URL.",
              "type": "any"
            }
          },
          "description": "Application specific response metadata. Must be set in the first response for streaming APIs.",
          "type": "array"
        },
        "data": {
          "type": "string",
          "format": "byte",
          "description": "The HTTP request/response body as raw binary."
        }
      }
    },
    "GoogleCloudApigeeV1Score": {
      "description": "Represents Security Score.",
      "id": "GoogleCloudApigeeV1Score",
      "type": "object",
      "properties": {
        "timeRange": {
          "description": "Start and end time for the score.",
          "$ref": "GoogleTypeInterval"
        },
        "subcomponents": {
          "description": "List of all the drilldown score components.",
          "items": {
            "$ref": "GoogleCloudApigeeV1ScoreComponent"
          },
          "type": "array"
        },
        "component": {
          "description": "Component containing score, recommendations and actions.",
          "$ref": "GoogleCloudApigeeV1ScoreComponent"
        }
      }
    },
    "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestApiHubGatewayArray": {
      "type": "object",
      "properties": {
        "gateways": {
          "description": "Required. The array of API Hub Gateway IDs. Format: `projects/{project}/locations/{location}/plugins/{plugin}/instances/{instance}`",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "id": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestApiHubGatewayArray",
      "description": "Message for the array of API Hub Gateways."
    },
    "GoogleCloudApigeeV1ProfileConfigCategory": {
      "type": "object",
      "id": "GoogleCloudApigeeV1ProfileConfigCategory",
      "description": "Advanced API Security provides security profile that scores the following categories.",
      "properties": {
        "mtls": {
          "description": "Checks to see if you have configured mTLS for the target server.",
          "$ref": "GoogleCloudApigeeV1ProfileConfigMTLS"
        },
        "mediation": {
          "$ref": "GoogleCloudApigeeV1ProfileConfigMediation",
          "description": "Checks to see if you have a mediation policy in place."
        },
        "abuse": {
          "description": "Checks for abuse, which includes any requests sent to the API for purposes other than what it is intended for, such as high volumes of requests, data scraping, and abuse related to authorization.",
          "$ref": "GoogleCloudApigeeV1ProfileConfigAbuse"
        },
        "cors": {
          "description": "Checks to see if you have CORS policy in place.",
          "$ref": "GoogleCloudApigeeV1ProfileConfigCORS"
        },
        "threat": {
          "description": "Checks to see if you have a threat protection policy in place.",
          "$ref": "GoogleCloudApigeeV1ProfileConfigThreat"
        },
        "authorization": {
          "description": "Checks to see if you have an authorization policy in place.",
          "$ref": "GoogleCloudApigeeV1ProfileConfigAuthorization"
        }
      }
    },
    "GoogleCloudApigeeV1TargetServer": {
      "description": "TargetServer configuration. TargetServers are used to decouple a proxy TargetEndpoint HTTPTargetConnections from concrete URLs for backend services.",
      "id": "GoogleCloudApigeeV1TargetServer",
      "properties": {
        "isEnabled": {
          "type": "boolean",
          "description": "Optional. Enabling/disabling a TargetServer is useful when TargetServers are used in load balancing configurations, and one or more TargetServers need to taken out of rotation periodically. Defaults to true."
        },
        "name": {
          "type": "string",
          "description": "Required. The resource id of this target server. "
        },
        "sSLInfo": {
          "$ref": "GoogleCloudApigeeV1TlsInfo",
          "description": "Optional. Specifies TLS configuration info for this TargetServer. The JSON name is `sSLInfo` for legacy/backwards compatibility reasons -- Edge originally supported SSL, and the name is still used for TLS configuration."
        },
        "host": {
          "description": "Required. The host name this target connects to. Value must be a valid hostname as described by RFC-1123.",
          "type": "string"
        },
        "port": {
          "type": "integer",
          "description": "Required. The port number this target connects to on the given host. Value must be between 1 and 65535, inclusive.",
          "format": "int32"
        },
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description of this TargetServer."
        },
        "protocol": {
          "enum": [
            "PROTOCOL_UNSPECIFIED",
            "HTTP",
            "HTTP2",
            "GRPC_TARGET",
            "GRPC",
            "EXTERNAL_CALLOUT"
          ],
          "description": "Immutable. The protocol used by this TargetServer.",
          "type": "string",
          "enumDescriptions": [
            "UNSPECIFIED defaults to HTTP for backwards compatibility.",
            "The TargetServer uses HTTP.",
            "The TargetSever uses HTTP2.",
            "The TargetServer uses GRPC.",
            "GRPC TargetServer to be used in ExternalCallout Policy. Prefer to use EXTERNAL_CALLOUT instead.",
            "The TargetServer is to be used in the ExternalCallout Policy"
          ]
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1Query": {
      "type": "object",
      "id": "GoogleCloudApigeeV1Query",
      "properties": {
        "csvDelimiter": {
          "description": "Delimiter used in the CSV file, if `outputFormat` is set to `csv`. Defaults to the `,` (comma) character. Supported delimiter characters include comma (`,`), pipe (`|`), and tab (`\\t`).",
          "type": "string"
        },
        "filter": {
          "description": "Boolean expression that can be used to filter data. Filter expressions can be combined using AND/OR terms and should be fully parenthesized to avoid ambiguity. See Analytics metrics, dimensions, and filters reference https://docs.apigee.com/api-platform/analytics/analytics-reference for more information on the fields available to filter on. For more information on the tokens that you use to build filter expressions, see Filter expression syntax. https://docs.apigee.com/api-platform/analytics/asynch-reports-api#filter-expression-syntax",
          "type": "string"
        },
        "dimensions": {
          "description": "A list of dimensions. https://docs.apigee.com/api-platform/analytics/analytics-reference#dimensions",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "reportDefinitionId": {
          "description": "Asynchronous Report ID.",
          "type": "string"
        },
        "envgroupHostname": {
          "description": "Hostname needs to be specified if query intends to run at host level. This field is only allowed when query is submitted by CreateHostAsyncQuery where analytics data will be grouped by organization and hostname.",
          "type": "string"
        },
        "limit": {
          "description": "Maximum number of rows that can be returned in the result.",
          "format": "int32",
          "type": "integer"
        },
        "metrics": {
          "description": "A list of Metrics.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1QueryMetric"
          }
        },
        "outputFormat": {
          "description": "Valid values include: `csv` or `json`. Defaults to `json`. Note: Configure the delimiter for CSV output using the csvDelimiter property.",
          "type": "string"
        },
        "name": {
          "description": "Asynchronous Query Name.",
          "type": "string"
        },
        "timeRange": {
          "description": "Required. Time range for the query. Can use the following predefined strings to specify the time range: `last60minutes` `last24hours` `last7days` Or, specify the timeRange as a structure describing start and end timestamps in the ISO format: yyyy-mm-ddThh:mm:ssZ. Example: \"timeRange\": { \"start\": \"2018-07-29T00:13:00Z\", \"end\": \"2018-08-01T00:18:00Z\" }",
          "type": "any"
        },
        "groupByTimeUnit": {
          "description": "Time unit used to group the result set. Valid values include: second, minute, hour, day, week, or month. If a query includes groupByTimeUnit, then the result is an aggregation based on the specified time unit and the resultant timestamp does not include milliseconds precision. If a query omits groupByTimeUnit, then the resultant timestamp includes milliseconds precision.",
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1FlowHookConfig": {
      "id": "GoogleCloudApigeeV1FlowHookConfig",
      "properties": {
        "continueOnError": {
          "type": "boolean",
          "description": "Flag that specifies whether the flow should abort after an error in the flow hook. Defaults to `true` (continue on error)."
        },
        "sharedFlowName": {
          "type": "string",
          "description": "Name of the shared flow to invoke in the following format: `organizations/{org}/sharedflows/{sharedflow}`"
        },
        "name": {
          "description": "Name of the flow hook in the following format: `organizations/{org}/environments/{env}/flowhooks/{point}`. Valid `point` values include: `PreProxyFlowHook`, `PostProxyFlowHook`, `PreTargetFlowHook`, and `PostTargetFlowHook`",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1SecurityActionDeny": {
      "id": "GoogleCloudApigeeV1SecurityActionDeny",
      "description": "Message that should be set in case of a Deny Action.",
      "properties": {
        "responseCode": {
          "format": "int32",
          "type": "integer",
          "description": "Optional. The HTTP response code if the Action = DENY."
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1APIProductAssociation": {
      "properties": {
        "status": {
          "description": "The API product credential associated status. Valid values are `approved` or `revoked`.",
          "type": "string"
        },
        "apiproduct": {
          "type": "string",
          "description": "API product to be associated with the credential."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1APIProductAssociation",
      "description": "APIProductAssociation has the API product and its administrative state association."
    },
    "GoogleCloudApigeeV1BatchUpdateSecurityIncidentsRequest": {
      "id": "GoogleCloudApigeeV1BatchUpdateSecurityIncidentsRequest",
      "properties": {
        "requests": {
          "description": "Optional. Required. The request message specifying the resources to update. A maximum of 1000 can be modified in a batch.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1UpdateSecurityIncidentRequest"
          }
        }
      },
      "type": "object",
      "description": "Request for BatchUpdateSecurityIncident."
    },
    "GoogleCloudApigeeV1InstanceAttachment": {
      "description": "InstanceAttachment represents the installation of an environment onto an instance.",
      "type": "object",
      "properties": {
        "environment": {
          "type": "string",
          "description": "ID of the attached environment."
        },
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. ID of the attachment."
        },
        "createdAt": {
          "type": "string",
          "readOnly": true,
          "format": "int64",
          "description": "Output only. Time the attachment was created in milliseconds since epoch."
        }
      },
      "id": "GoogleCloudApigeeV1InstanceAttachment"
    },
    "GoogleCloudApigeeV1ListAppGroupSubscriptionsResponse": {
      "type": "object",
      "description": "Response for ListAppGroupSubscriptions.",
      "id": "GoogleCloudApigeeV1ListAppGroupSubscriptionsResponse",
      "properties": {
        "appGroupSubscriptions": {
          "items": {
            "$ref": "GoogleCloudApigeeV1AppGroupSubscription"
          },
          "description": "The list of subscriptions for an AppGroup.",
          "type": "array"
        },
        "nextPageToken": {
          "description": "Value that can be sent as `pageToken` to retrieve the next page of content. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1Schema": {
      "description": "Response for Schema call",
      "properties": {
        "metrics": {
          "items": {
            "$ref": "GoogleCloudApigeeV1SchemaSchemaElement"
          },
          "type": "array",
          "description": "List of schema fields grouped as dimensions that can be used with an aggregate function such as `sum`, `avg`, `min`, and `max`."
        },
        "meta": {
          "items": {
            "type": "string"
          },
          "description": "Additional metadata associated with schema. This is a legacy field and usually consists of an empty array of strings.",
          "type": "array"
        },
        "dimensions": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1SchemaSchemaElement"
          },
          "description": "List of schema fields grouped as dimensions."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1Schema"
    },
    "GoogleCloudApigeeV1SecurityProfileScoringConfig": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string",
          "description": "Title of the config."
        },
        "scorePath": {
          "type": "string",
          "description": "Path of the component config used for scoring."
        },
        "description": {
          "type": "string",
          "description": "Description of the config."
        }
      },
      "id": "GoogleCloudApigeeV1SecurityProfileScoringConfig",
      "description": "Security configurations to manage scoring."
    },
    "GoogleCloudApigeeV1OperationMetadataProgress": {
      "id": "GoogleCloudApigeeV1OperationMetadataProgress",
      "description": "Information about operation progress.",
      "properties": {
        "state": {
          "enumDescriptions": [
            "",
            "",
            "",
            ""
          ],
          "type": "string",
          "description": "State of the operation.",
          "enum": [
            "STATE_UNSPECIFIED",
            "NOT_STARTED",
            "IN_PROGRESS",
            "FINISHED"
          ]
        },
        "details": {
          "type": "object",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object."
          },
          "description": "The additional details of the progress."
        },
        "description": {
          "description": "Description of the operation's progress.",
          "type": "string"
        },
        "percentDone": {
          "format": "int32",
          "type": "integer",
          "description": "The percentage of the operation progress."
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1GenerateDownloadUrlResponse": {
      "type": "object",
      "properties": {
        "downloadUri": {
          "description": "The Google Cloud Storage signed URL that can be used to download the Archive zip file.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1GenerateDownloadUrlResponse",
      "description": "Response for GenerateDownloadUrl method."
    },
    "GoogleCloudApigeeV1ScoreComponentRecommendationAction": {
      "properties": {
        "actionContext": {
          "$ref": "GoogleCloudApigeeV1ScoreComponentRecommendationActionActionContext",
          "description": "Action context for the action."
        },
        "description": {
          "description": "Description of the action.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1ScoreComponentRecommendationAction",
      "type": "object",
      "description": "Action to improve security score."
    },
    "GoogleCloudApigeeV1TargetServerConfig": {
      "id": "GoogleCloudApigeeV1TargetServerConfig",
      "properties": {
        "host": {
          "description": "Host name of the target server.",
          "type": "string"
        },
        "port": {
          "format": "int32",
          "description": "Port number for the target server.",
          "type": "integer"
        },
        "name": {
          "description": "Target server revision name in the following format: `organizations/{org}/environments/{env}/targetservers/{targetserver}/revisions/{rev}`",
          "type": "string"
        },
        "enabled": {
          "description": "Whether the target server is enabled. An empty/omitted value for this field should be interpreted as true.",
          "type": "boolean"
        },
        "protocol": {
          "type": "string",
          "description": "The protocol used by this target server.",
          "enumDescriptions": [
            "UNSPECIFIED defaults to HTTP for backwards compatibility.",
            "The TargetServer uses HTTP.",
            "The TargetSever uses HTTP2.",
            "The TargetServer uses GRPC.",
            "GRPC TargetServer to be used in ExternalCallout Policy. Prefer to use EXTERNAL_CALLOUT instead.",
            "The TargetServer is to be used in the ExternalCallout Policy"
          ],
          "enum": [
            "PROTOCOL_UNSPECIFIED",
            "HTTP",
            "HTTP2",
            "GRPC_TARGET",
            "GRPC",
            "EXTERNAL_CALLOUT"
          ]
        },
        "tlsInfo": {
          "$ref": "GoogleCloudApigeeV1TlsInfoConfig",
          "description": "TLS settings for the target server."
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1AsyncApiDocumentation": {
      "type": "object",
      "id": "GoogleCloudApigeeV1AsyncApiDocumentation",
      "description": "AsyncAPI Specification documentation for a catalog item.",
      "properties": {
        "spec": {
          "description": "Required. The documentation file contents for the AsyncAPI Specification. JSON and YAML file formats are supported.",
          "$ref": "GoogleCloudApigeeV1DocumentationFile"
        }
      }
    },
    "GoogleCloudApigeeV1PayloadOperationConfig": {
      "id": "GoogleCloudApigeeV1PayloadOperationConfig",
      "description": "Binds the payload operations in an API proxy with the associated quota enforcement.",
      "properties": {
        "operations": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1PayloadOperation"
          },
          "description": "Required. List of payload operations for the API proxy to which quota will be applied."
        },
        "attributes": {
          "description": "Optional. Custom attributes associated with the operation.",
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          },
          "type": "array"
        },
        "apiSource": {
          "type": "string",
          "description": "Required. Name of the API proxy with which the payload operations and quota are associated."
        },
        "quota": {
          "description": "Optional. Quota parameters to be enforced for the operations and API source combination. If none are specified, quota enforcement will not be done unless a quota is defined at the API product level.",
          "$ref": "GoogleCloudApigeeV1Quota"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1ApiDocDocumentation": {
      "id": "GoogleCloudApigeeV1ApiDocDocumentation",
      "description": "The documentation for a catalog item.",
      "type": "object",
      "properties": {
        "asyncApiDocumentation": {
          "description": "Optional. AsyncAPI Specification documentation.",
          "$ref": "GoogleCloudApigeeV1AsyncApiDocumentation"
        },
        "oasDocumentation": {
          "$ref": "GoogleCloudApigeeV1OASDocumentation",
          "description": "Optional. OpenAPI Specification documentation."
        },
        "graphqlDocumentation": {
          "description": "Optional. GraphQL documentation.",
          "$ref": "GoogleCloudApigeeV1GraphqlDocumentation"
        }
      }
    },
    "GoogleCloudApigeeV1CreditDeveloperBalanceRequest": {
      "id": "GoogleCloudApigeeV1CreditDeveloperBalanceRequest",
      "description": "Request for CreditDeveloperBalance.",
      "type": "object",
      "properties": {
        "transactionId": {
          "description": "Each transaction_id uniquely identifies a credit balance request. If multiple requests are received with the same transaction_id, only one of them will be considered.",
          "type": "string"
        },
        "transactionAmount": {
          "description": "The amount of money to be credited. The wallet corresponding to the currency specified within `transaction_amount` will be updated. For example, if you specified `currency_code` within `transaction_amount` as \"USD\", then the amount would be added to the wallet which has the \"USD\" currency or if no such wallet exists, a new wallet will be created with the \"USD\" currency.",
          "$ref": "GoogleTypeMoney"
        }
      }
    },
    "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequest": {
      "type": "object",
      "properties": {
        "profile": {
          "type": "string",
          "description": "Required. Name of the profile that is used for computation."
        },
        "include": {
          "description": "Include only these resources.",
          "$ref": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestResourceArray"
        },
        "scope": {
          "type": "string",
          "description": "Optional. Scope of the resources for the computation. When computing scores for Apigee proxies, the scope should be set to the environment of the resources. When computing scores for API Hub deployments, api_hub_scope should be set instead."
        },
        "pageSize": {
          "type": "integer",
          "description": "Optional. The maximum number of results to return. The service may return fewer than this value. If unspecified, at most 50 results will be returned.",
          "format": "int32"
        },
        "includeAllResources": {
          "$ref": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestIncludeAll",
          "description": "Include all resources under the scope."
        },
        "pageToken": {
          "description": "Optional. A page token, received from a previous `BatchComputeSecurityAssessmentResults` call. Provide this to retrieve the subsequent page.",
          "type": "string"
        },
        "apiHubGateways": {
          "$ref": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestApiHubGatewayArray",
          "description": "An array of API Hub Gateways to assess. A maximum of 3 gateways can be assessed."
        },
        "apiHubApis": {
          "$ref": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestApiHubApiArray",
          "description": "An array of API Hub APIs to assess. A maximum of 1 API can be assessed."
        }
      },
      "description": "Request for BatchComputeSecurityAssessmentResults.",
      "id": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequest"
    },
    "GoogleCloudApigeeV1Credential": {
      "properties": {
        "issuedAt": {
          "description": "Time the credential was issued in milliseconds since epoch.",
          "format": "int64",
          "type": "string"
        },
        "scopes": {
          "description": "List of scopes to apply to the app. Specified scopes must already exist on the API product that you associate with the app.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "status": {
          "type": "string",
          "description": "Status of the credential. Valid values include `approved` or `revoked`."
        },
        "apiProducts": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1ApiProductRef"
          },
          "description": "List of API products this credential can be used for."
        },
        "expiresAt": {
          "type": "string",
          "format": "int64",
          "description": "Time the credential will expire in milliseconds since epoch."
        },
        "consumerSecret": {
          "description": "Secret key.",
          "type": "string"
        },
        "consumerKey": {
          "description": "Consumer key.",
          "type": "string"
        },
        "attributes": {
          "description": "List of attributes associated with this credential.",
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          },
          "type": "array"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1Credential"
    },
    "GoogleCloudApigeeV1ComputeEnvironmentScoresRequestFilter": {
      "properties": {
        "scorePath": {
          "type": "string",
          "description": "Optional. Return scores for this component. Example: \"/org@myorg/envgroup@myenvgroup/env@myenv/proxies/proxy@myproxy/source\""
        }
      },
      "type": "object",
      "description": "Filter scores by component path. Used custom filter instead of AIP-160 as the use cases are highly constrained and predictable.",
      "id": "GoogleCloudApigeeV1ComputeEnvironmentScoresRequestFilter"
    },
    "GoogleCloudApigeeV1OptimizedStatsNode": {
      "id": "GoogleCloudApigeeV1OptimizedStatsNode",
      "description": "Encapsulates a data node as represented below: ``` { \"identifier\": { \"names\": [ \"apiproxy\" ], \"values\": [ \"sirjee\" ] }, \"metric\": [ { \"env\": \"prod\", \"name\": \"sum(message_count)\", \"values\": [ 36.0 ] } ] }``` or ``` { \"env\": \"prod\", \"name\": \"sum(message_count)\", \"values\": [ 36.0 ] }``` Depending on whether a dimension is present in the query or not the data node type can be a simple metric value or dimension identifier with list of metrics.",
      "properties": {
        "data": {
          "type": "array",
          "description": "List of data values.",
          "items": {
            "type": "any"
          }
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1CommonNameConfig": {
      "type": "object",
      "id": "GoogleCloudApigeeV1CommonNameConfig",
      "properties": {
        "matchWildCards": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1RuntimeConfig": {
      "properties": {
        "traceBucket": {
          "description": "Cloud Storage bucket used for uploading Trace records.",
          "type": "string"
        },
        "analyticsBucket": {
          "description": "Cloud Storage bucket used for uploading Analytics records.",
          "type": "string"
        },
        "name": {
          "description": "Name of the resource in the following format: `organizations/{org}/runtimeConfig`.",
          "type": "string"
        },
        "tenantProjectId": {
          "description": "Output only. Tenant project ID associated with the Apigee organization. The tenant project is used to host Google-managed resources that are dedicated to this Apigee organization. Clients have limited access to resources within the tenant project used to support Apigee runtime instances. Access to the tenant project is managed using SetSyncAuthorization. It can be empty if the tenant project hasn't been created yet.",
          "type": "string",
          "readOnly": true
        }
      },
      "description": "Runtime configuration for the organization. Response for GetRuntimeConfig.",
      "id": "GoogleCloudApigeeV1RuntimeConfig",
      "type": "object"
    },
    "GoogleCloudApigeeV1ListDebugSessionsResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "Page token that you can include in a ListDebugSessionsRequest to retrieve the next page. If omitted, no subsequent pages exist.",
          "type": "string"
        },
        "sessions": {
          "items": {
            "$ref": "GoogleCloudApigeeV1Session"
          },
          "description": "Session info that includes debug session ID and the first transaction creation timestamp.",
          "type": "array"
        }
      },
      "id": "GoogleCloudApigeeV1ListDebugSessionsResponse"
    },
    "GoogleCloudApigeeV1ApimServiceExtension": {
      "type": "object",
      "id": "GoogleCloudApigeeV1ApimServiceExtension",
      "properties": {
        "createTime": {
          "readOnly": true,
          "format": "google-datetime",
          "description": "Output only. The time that this resource was created on the server.",
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "Identifier. unique name of the APIM service extension. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number."
        },
        "extensions": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1ApimServiceExtensionExtension"
          },
          "description": "Optional. List of extensions that are part of the service extension. Refer to https://cloud.google.com/service-extensions/docs/quotas#limits for any limits."
        },
        "extensionProcessor": {
          "description": "Required. Name of the proxy deployed in the Apigee X instance.",
          "type": "string"
        },
        "updateTime": {
          "format": "google-datetime",
          "description": "Output only. The time that this resource was updated on the server.",
          "type": "string",
          "readOnly": true
        },
        "lbForwardingRule": {
          "type": "string",
          "description": "Required. Name of the Google Cloud LB forwarding rule. Format: projects/{project}/regions/{region}/forwardingRules/{forwarding_rule} projects/{project}/global/forwardingRules/{forwarding_rule}"
        },
        "network": {
          "description": "Required. The network where the forwarding rule is created. Format: projects/{project}/global/networks/{network}",
          "type": "string"
        },
        "networkConfigs": {
          "items": {
            "$ref": "GoogleCloudApigeeV1ApimServiceExtensionNetworkConfig"
          },
          "type": "array",
          "description": "Required. List of network configurations for the APIM service extension."
        },
        "state": {
          "description": "Output only. State of the APIM service extension. Values other than `ACTIVE` mean the resource is not ready to use.",
          "type": "string",
          "readOnly": true,
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "ACTIVE",
            "DELETING",
            "UPDATING"
          ],
          "enumDescriptions": [
            "Resource is in an unspecified state.",
            "Resource is being created.",
            "Resource is provisioned and ready to use.",
            "The resource is being deleted.",
            "The resource is being updated."
          ]
        }
      },
      "description": "APIM Service Extension is a resource under an Apigee Organization that is used to create APIM Service Extension to route traffic to existing X instances."
    },
    "GoogleCloudApigeeV1Alias": {
      "properties": {
        "certsInfo": {
          "$ref": "GoogleCloudApigeeV1Certificate",
          "description": "Chain of certificates under this alias."
        },
        "alias": {
          "description": "Resource ID for this alias. Values must match the regular expression `[^/]{1,255}`.",
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "ALIAS_TYPE_UNSPECIFIED",
            "CERT",
            "KEY_CERT"
          ],
          "enumDescriptions": [
            "Alias type is not specified.",
            "Certificate.",
            "Key/certificate pair."
          ],
          "description": "Type of alias."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1Alias",
      "description": "Reference to a certificate or key/certificate pair."
    },
    "GoogleCloudApigeeV1Metric": {
      "properties": {
        "values": {
          "items": {
            "type": "any"
          },
          "description": "List of metric values. Possible value formats include: `\"values\":[\"39.0\"]` or `\"values\":[ { \"value\": \"39.0\", \"timestamp\": 1232434354} ]`",
          "type": "array"
        },
        "name": {
          "type": "string",
          "description": "Metric name."
        }
      },
      "id": "GoogleCloudApigeeV1Metric",
      "type": "object",
      "description": "Encapsulates the metric data point. For example: ```{ \"name\": \"sum(message_count)\", \"values\" : [ { \"timestamp\": 1549004400000, \"value\": \"39.0\" }, { \"timestamp\" : 1548997200000, \"value\" : \"0.0\" } ] }``` or ```{ \"name\": \"sum(message_count)\", \"values\" : [\"39.0\"] }```"
    },
    "GoogleCloudApigeeV1EnvironmentGroupAttachment": {
      "id": "GoogleCloudApigeeV1EnvironmentGroupAttachment",
      "properties": {
        "environment": {
          "description": "Required. ID of the attached environment.",
          "type": "string"
        },
        "createdAt": {
          "format": "int64",
          "description": "Output only. The time at which the environment group attachment was created as milliseconds since epoch.",
          "type": "string",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "ID of the environment group attachment."
        },
        "environmentGroupId": {
          "description": "Output only. ID of the environment group.",
          "type": "string",
          "readOnly": true
        }
      },
      "type": "object",
      "description": "EnvironmentGroupAttachment is a resource which defines an attachment of an environment to an environment group."
    },
    "GoogleCloudApigeeV1RuntimeTraceConfigOverride": {
      "description": "NEXT ID: 10 Trace configuration override for a specific API proxy in an environment.",
      "type": "object",
      "id": "GoogleCloudApigeeV1RuntimeTraceConfigOverride",
      "properties": {
        "apiProxy": {
          "description": "Name of the API proxy that will have its trace configuration overridden following format: `organizations/{org}/apis/{api}`",
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "Name of the trace config override in the following format: `organizations/{org}/environment/{env}/traceConfig/overrides/{override}`"
        },
        "uid": {
          "description": "Unique ID for the configuration override. The ID will only change if the override is deleted and recreated. Corresponds to name's \"override\" field.",
          "type": "string"
        },
        "revisionCreateTime": {
          "type": "string",
          "description": "The timestamp that the revision was created or updated.",
          "format": "google-datetime"
        },
        "spanSemantics": {
          "enum": [
            "SPAN_SEMANTICS_UNSPECIFIED",
            "LEGACY",
            "OTEL"
          ],
          "description": "Optional. The span semantics to use. Configuration Requirements (if `span_semantics` is `OTEL`): - `trace_protocol` must be `OTLP`.",
          "enumDescriptions": [
            "Semantics unspecified. Defaults to LEGACY.",
            "Uses Apigee legacy span and attribute names.",
            "Uses OpenTelemetry semantic-convention-aligned span and attribute names."
          ],
          "type": "string"
        },
        "samplingConfig": {
          "$ref": "GoogleCloudApigeeV1RuntimeTraceSamplingConfig",
          "description": "Trace configuration override for a specific API proxy in an environment."
        },
        "openTelemetryProtocolEnabled": {
          "type": "boolean",
          "deprecated": true,
          "description": "Optional. If `true`, the runtime uses OpenTelemetry Protocol (OTLP) to send trace data. Configuration Requirements (if `open_telemetry_protocol_enabled` is `true`): - Allowed `Exporter`s: `CLOUD_TRACE` or `OPEN_TELEMETRY_COLLECTOR`. - If `Exporter` is `OPEN_TELEMETRY_COLLECTOR`: - `endpoint` refers to a valid OTLP collector URL. - If `Exporter` is `CLOUD_TRACE`: - `endpoint` refers to a valid project ID Deprecated: Use trace_protocol instead."
        },
        "revisionId": {
          "description": "Revision number which can be used by the runtime to detect if the trace config override has changed between two versions.",
          "type": "string"
        },
        "traceProtocol": {
          "enumDescriptions": [
            "Protocol unspecified. Defaults to OPEN_CENSUS.",
            "Uses OpenCensus protocol.",
            "Uses OpenTelemetry Protocol (OTLP)."
          ],
          "enum": [
            "TRACE_PROTOCOL_UNSPECIFIED",
            "OPEN_CENSUS",
            "OTLP"
          ],
          "type": "string",
          "description": "Optional. The trace protocol to use."
        }
      }
    },
    "GoogleCloudApigeeV1ControlPlaneAccess": {
      "id": "GoogleCloudApigeeV1ControlPlaneAccess",
      "type": "object",
      "description": "ControlPlaneAccess is the request body and response body of UpdateControlPlaneAccess. and the response body of GetControlPlaneAccess. The input identities contains an array of service accounts to grant access to the respective control plane resource, with each service account specified using the following format: `serviceAccount:`***service-account-name***. The ***service-account-name*** is formatted like an email address. For example: `my-control-plane-service_account@my_project_id.iam.gserviceaccount.com` You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.",
      "properties": {
        "watcherIdentities": {
          "items": {
            "type": "string"
          },
          "description": "Optional. Service accounts granted access to control plane resources for the apigee-watcher component.",
          "type": "array"
        },
        "name": {
          "type": "string",
          "description": "Identifier. The resource name of the ControlPlaneAccess. Format: \"organizations/{org}/controlPlaneAccess\""
        },
        "synchronizerIdentities": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Optional. Array of service accounts to grant access to control plane resources (for the Synchronizer component). The service accounts must have **Apigee Synchronizer Manager** role. See also [Create service accounts](https://cloud.google.com/apigee/docs/hybrid/latest/sa-about#create-the-service-accounts)."
        },
        "analyticsPublisherIdentities": {
          "description": "Optional. Array of service accounts authorized to publish analytics data to the control plane (for the Message Processor component).",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      }
    },
    "GoogleCloudApigeeV1DeploymentChangeReportRoutingChange": {
      "description": "Describes a potential routing change that may occur as a result of some deployment operation.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Human-readable description of this routing change."
        },
        "toDeployment": {
          "$ref": "GoogleCloudApigeeV1DeploymentChangeReportRoutingDeployment",
          "description": "Base path/deployment that may start receiving that traffic. May be null if no deployment is able to receive the traffic."
        },
        "fromDeployment": {
          "description": "Base path/deployment that may stop receiving some traffic.",
          "$ref": "GoogleCloudApigeeV1DeploymentChangeReportRoutingDeployment"
        },
        "environmentGroup": {
          "type": "string",
          "description": "Name of the environment group affected by this routing change."
        },
        "shouldSequenceRollout": {
          "description": "Set to `true` if using sequenced rollout would make this routing change safer. **Note**: This does not necessarily imply that automated sequenced rollout mode is supported for the operation.",
          "type": "boolean"
        }
      },
      "id": "GoogleCloudApigeeV1DeploymentChangeReportRoutingChange",
      "type": "object"
    },
    "GoogleCloudApigeeV1ResourceConfig": {
      "type": "object",
      "id": "GoogleCloudApigeeV1ResourceConfig",
      "properties": {
        "location": {
          "description": "Location of the resource as a URI.",
          "type": "string"
        },
        "name": {
          "description": "Resource name in the following format: `organizations/{org}/environments/{env}/resourcefiles/{type}/{file}/revisions/{rev}` Only environment-scoped resource files are supported.",
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1ScoreComponentRecommendation": {
      "id": "GoogleCloudApigeeV1ScoreComponentRecommendation",
      "description": "Recommendation based on security concerns and score.",
      "properties": {
        "title": {
          "description": "Title represents recommendation title.",
          "type": "string"
        },
        "impact": {
          "description": "Potential impact of this recommendation on the overall score. This denotes how important this recommendation is to improve the score.",
          "format": "int32",
          "type": "integer"
        },
        "actions": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1ScoreComponentRecommendationAction"
          },
          "description": "Actions for the recommendation to improve the security score."
        },
        "description": {
          "type": "string",
          "description": "Description of the recommendation."
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1Certificate": {
      "type": "object",
      "id": "GoogleCloudApigeeV1Certificate",
      "properties": {
        "certInfo": {
          "items": {
            "$ref": "GoogleCloudApigeeV1CertInfo"
          },
          "description": "Chain of certificates under this name.",
          "type": "array"
        }
      }
    },
    "GoogleCloudApigeeV1ProfileConfigMTLS": {
      "description": "Checks to see if you have configured mTLS for the target server.",
      "id": "GoogleCloudApigeeV1ProfileConfigMTLS",
      "type": "object",
      "properties": {}
    },
    "GoogleCloudApigeeV1CanaryEvaluation": {
      "id": "GoogleCloudApigeeV1CanaryEvaluation",
      "type": "object",
      "properties": {
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Name of the canary evalution."
        },
        "treatment": {
          "type": "string",
          "description": "Required. The newer version that is serving requests."
        },
        "createTime": {
          "format": "google-datetime",
          "readOnly": true,
          "description": "Output only. Create time of the canary evaluation.",
          "type": "string"
        },
        "state": {
          "description": "Output only. The current state of the canary evaluation.",
          "enum": [
            "STATE_UNSPECIFIED",
            "RUNNING",
            "SUCCEEDED"
          ],
          "enumDescriptions": [
            "No state has been specified.",
            "The canary evaluation is still in progress.",
            "The canary evaluation has finished."
          ],
          "readOnly": true,
          "type": "string"
        },
        "startTime": {
          "description": "Required. Start time for the canary evaluation's analysis.",
          "type": "string",
          "format": "google-datetime"
        },
        "control": {
          "description": "Required. The stable version that is serving requests.",
          "type": "string"
        },
        "endTime": {
          "type": "string",
          "format": "google-datetime",
          "description": "Required. End time for the evaluation's analysis."
        },
        "metricLabels": {
          "$ref": "GoogleCloudApigeeV1CanaryEvaluationMetricLabels",
          "description": "Required. Labels used to filter the metrics used for a canary evaluation."
        },
        "verdict": {
          "readOnly": true,
          "type": "string",
          "enum": [
            "VERDICT_UNSPECIFIED",
            "NONE",
            "FAIL",
            "PASS"
          ],
          "enumDescriptions": [
            "Verdict is not available yet.",
            "No verdict reached.",
            "Evaluation is not good.",
            "Evaluation is good."
          ],
          "description": "Output only. The resulting verdict of the canary evaluations: NONE, PASS, or FAIL."
        }
      },
      "description": "CanaryEvaluation represents the canary analysis between two versions of the runtime that is serving requests."
    },
    "GoogleCloudApigeeV1ListDataCollectorsResponse": {
      "type": "object",
      "description": "Response for ListDataCollectors.",
      "properties": {
        "dataCollectors": {
          "description": "Data collectors in the specified organization.",
          "items": {
            "$ref": "GoogleCloudApigeeV1DataCollector"
          },
          "type": "array"
        },
        "nextPageToken": {
          "description": "Page token that you can include in a ListDataCollectors request to retrieve the next page. If omitted, no subsequent pages exist.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1ListDataCollectorsResponse"
    },
    "GoogleCloudApigeeV1RuntimeAnalyticsConfig": {
      "properties": {
        "enabled": {
          "description": "If the Analytics is enabled or not.",
          "type": "boolean"
        },
        "billingPipelineEnabled": {
          "description": "If Runtime should send billing data to AX or not.",
          "type": "boolean"
        }
      },
      "id": "GoogleCloudApigeeV1RuntimeAnalyticsConfig",
      "type": "object",
      "description": "Runtime configuration for the Analytics add-on."
    },
    "GoogleIamV1TestIamPermissionsRequest": {
      "description": "Request message for `TestIamPermissions` method.",
      "id": "GoogleIamV1TestIamPermissionsRequest",
      "type": "object",
      "properties": {
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions)."
        }
      }
    },
    "GoogleCloudApigeeV1AppGroupBalance": {
      "type": "object",
      "properties": {
        "wallets": {
          "type": "array",
          "readOnly": true,
          "items": {
            "$ref": "GoogleCloudApigeeV1AppGroupBalanceWallet"
          },
          "description": "Output only. List of all wallets. Each individual wallet stores the account balance for a particular currency."
        }
      },
      "description": "AppGroupBalance for the AppGroup.",
      "id": "GoogleCloudApigeeV1AppGroupBalance"
    },
    "GoogleCloudApigeeV1Result": {
      "description": "Result is short for \"action result\", could be different types identified by \"action_result\" field. Supported types: 1. DebugInfo : generic debug info collected by runtime recorded as a list of properties. For example, the contents could be virtual host info, state change result, or execution metadata. Required fields : properties, timestamp 2. RequestMessage: information of a http request. Contains headers, request URI and http methods type.Required fields : headers, uri, verb 3. ResponseMessage: information of a http response. Contains headers, reason phrase and http status code. Required fields : headers, reasonPhrase, statusCode 4. ErrorMessage: information of a http error message. Contains detail error message, reason phrase and status code. Required fields : content, headers, reasonPhrase, statusCode 5. VariableAccess: a list of variable access actions, can be Get, Set and Remove. Required fields : accessList",
      "id": "GoogleCloudApigeeV1Result",
      "type": "object",
      "properties": {
        "accessList": {
          "description": "A list of variable access actions agaist the api proxy. Supported values: Get, Set, Remove.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Access"
          }
        },
        "uRI": {
          "description": "The relative path of the api proxy. for example, `\"uRI\" : \"/iloveapis\"`",
          "type": "string"
        },
        "headers": {
          "description": "A list of HTTP headers. for example, '\"headers\" : [ { \"name\" : \"Content-Length\", \"value\" : \"83\" }, { \"name\" : \"Content-Type\", \"value\" : \"application/json\" } ]'",
          "items": {
            "$ref": "GoogleCloudApigeeV1Property"
          },
          "type": "array"
        },
        "statusCode": {
          "type": "string",
          "description": "HTTP response code"
        },
        "reasonPhrase": {
          "description": "HTTP response phrase",
          "type": "string"
        },
        "timestamp": {
          "description": "Timestamp of when the result is recorded. Its format is dd-mm-yy hh:mm:ss:xxx. For example, `\"timestamp\" : \"12-08-19 00:31:59:960\"`",
          "type": "string"
        },
        "content": {
          "type": "string",
          "description": "Error message content. for example, \"content\" : \"{\\\"fault\\\":{\\\"faultstring\\\":\\\"API timed out\\\",\\\"detail\\\":{\\\"errorcode\\\":\\\"flow.APITimedOut\\\"}}}\""
        },
        "verb": {
          "description": "HTTP method verb",
          "type": "string"
        },
        "properties": {
          "$ref": "GoogleCloudApigeeV1Properties",
          "description": "Name value pairs used for DebugInfo ActionResult."
        },
        "ActionResult": {
          "type": "string",
          "description": "Type of the action result. Can be one of the five: DebugInfo, RequestMessage, ResponseMessage, ErrorMessage, VariableAccess"
        }
      }
    },
    "GoogleCloudApigeeV1SecurityReport": {
      "type": "object",
      "properties": {
        "created": {
          "description": "Creation time of the query.",
          "type": "string"
        },
        "envgroupHostname": {
          "type": "string",
          "description": "Hostname is available only when query is executed at host level."
        },
        "displayName": {
          "description": "Display Name specified by the user.",
          "type": "string"
        },
        "updated": {
          "type": "string",
          "description": "Output only. Last updated timestamp for the query.",
          "readOnly": true
        },
        "resultFileSize": {
          "description": "ResultFileSize is available only after the query is completed.",
          "type": "string"
        },
        "reportDefinitionId": {
          "type": "string",
          "description": "Report Definition ID."
        },
        "state": {
          "description": "Query state could be \"enqueued\", \"running\", \"completed\", \"expired\" and \"failed\".",
          "type": "string"
        },
        "result": {
          "description": "Result is available only after the query is completed.",
          "$ref": "GoogleCloudApigeeV1SecurityReportResultMetadata"
        },
        "queryParams": {
          "description": "Contains information like metrics, dimenstions etc of the Security Report.",
          "$ref": "GoogleCloudApigeeV1SecurityReportMetadata"
        },
        "resultRows": {
          "type": "string",
          "format": "int64",
          "description": "ResultRows is available only after the query is completed."
        },
        "executionTime": {
          "description": "ExecutionTime is available only after the query is completed.",
          "type": "string"
        },
        "self": {
          "description": "Self link of the query. Example: `/organizations/myorg/environments/myenv/securityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd` or following format if query is running at host level: `/organizations/myorg/hostSecurityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd`",
          "type": "string"
        },
        "error": {
          "description": "Error is set when query fails.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1SecurityReport",
      "description": "SecurityReport saves all the information about the created security report."
    },
    "GoogleCloudApigeeV1PayloadOperation": {
      "id": "GoogleCloudApigeeV1PayloadOperation",
      "description": "Represents a single operation identifier extracted from the request payload.",
      "type": "object",
      "properties": {
        "operation": {
          "type": "string",
          "description": "Required. The operation name extracted from the request payload at runtime by the ParsePayload policy. For example, for MCP protocol requests, this could be `\"tools/list\"` or `\"tools/call/get_weather\"`. Wildcards are not supported."
        }
      }
    },
    "GoogleCloudApigeeV1RevenueShareRange": {
      "id": "GoogleCloudApigeeV1RevenueShareRange",
      "properties": {
        "end": {
          "format": "int64",
          "description": "Ending value of the range. Set to 0 or `null` for the last range of values.",
          "type": "string"
        },
        "start": {
          "format": "int64",
          "type": "string",
          "description": "Starting value of the range. Set to 0 or `null` for the initial range of values."
        },
        "sharePercentage": {
          "type": "number",
          "format": "double",
          "description": "Percentage of the revenue to be shared with the developer. For example, to share 21 percent of the total revenue with the developer, set this value to 21. Specify a decimal number with a maximum of two digits following the decimal point."
        }
      },
      "type": "object",
      "description": "API call volume range and the percentage of revenue to share with the developer when the total number of API calls is within the range."
    },
    "GoogleCloudApigeeV1LlmOperationConfig": {
      "id": "GoogleCloudApigeeV1LlmOperationConfig",
      "properties": {
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          },
          "description": "Optional. Custom attributes associated with the operation."
        },
        "apiSource": {
          "type": "string",
          "description": "Required. Name of the API proxy or remote service with which the resources, methods, and quota are associated."
        },
        "llmOperations": {
          "description": "Required. List of resource/method/model for the API proxy to which quota will applied. **Note**: Currently, you can specify only a single resource/method/model mapping. The call will fail if more than one resource/method/model mappings are provided.",
          "items": {
            "$ref": "GoogleCloudApigeeV1LlmOperation"
          },
          "type": "array"
        },
        "llmTokenQuota": {
          "description": "Required. LLM token Quota parameters to be enforced for the resources, methods, and API source & LLM model combination. If none are specified, quota enforcement will not be done.",
          "$ref": "GoogleCloudApigeeV1LlmTokenQuota"
        }
      },
      "description": "Binds the resources in an API proxy or remote service with the allowed REST methods and associated quota enforcement.",
      "type": "object"
    },
    "GoogleCloudApigeeV1Environment": {
      "type": "object",
      "id": "GoogleCloudApigeeV1Environment",
      "properties": {
        "name": {
          "description": "Required. Name of the environment. Values must match the regular expression `^[.\\\\p{Alnum}-_]{1,255}$`",
          "type": "string"
        },
        "state": {
          "description": "Output only. State of the environment. Values other than ACTIVE means the resource is not ready to use.",
          "enumDescriptions": [
            "Resource is in an unspecified state.",
            "Resource is being created.",
            "Resource is provisioned and ready to use.",
            "The resource is being deleted.",
            "The resource is being updated."
          ],
          "type": "string",
          "readOnly": true,
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "ACTIVE",
            "DELETING",
            "UPDATING"
          ]
        },
        "deploymentType": {
          "type": "string",
          "description": "Optional. Deployment type supported by the environment. The deployment type can be set when creating the environment and cannot be changed. When you enable archive deployment, you will be **prevented from performing** a [subset of actions](/apigee/docs/api-platform/local-development/overview#prevented-actions) within the environment, including: * Managing the deployment of API proxy or shared flow revisions * Creating, updating, or deleting resource files * Creating, updating, or deleting target servers",
          "enum": [
            "DEPLOYMENT_TYPE_UNSPECIFIED",
            "PROXY",
            "ARCHIVE"
          ],
          "enumDescriptions": [
            "Deployment type not specified.",
            "Proxy deployment enables you to develop and deploy API proxies using Apigee on Google Cloud. This cannot currently be combined with the CONFIGURABLE API proxy type.",
            "Archive deployment enables you to develop API proxies locally then deploy an archive of your API proxy configuration to an environment in Apigee on Google Cloud. You will be prevented from performing a [subset of actions](/apigee/docs/api-platform/local-development/overview#prevented-actions) within the environment."
          ]
        },
        "forwardProxyUri": {
          "description": "Optional. URI of the forward proxy to be applied to the runtime instances in this environment. Must be in the format of {scheme}://{hostname}:{port}. Note that the only supported scheme is \"http\". The port must be supplied. To remove a forward proxy setting, update the field to an empty value. Note: At this time, PUT operations to add forwardProxyUri to an existing environment fail if the environment has nodeConfig set up. To successfully add the forwardProxyUri setting in this case, include the NodeConfig details with the request.",
          "type": "string"
        },
        "createdAt": {
          "type": "string",
          "format": "int64",
          "readOnly": true,
          "description": "Output only. Creation time of this environment as milliseconds since epoch."
        },
        "properties": {
          "description": "Optional. Key-value pairs that may be used for customizing the environment.",
          "$ref": "GoogleCloudApigeeV1Properties"
        },
        "nodeConfig": {
          "description": "Optional. NodeConfig of the environment.",
          "$ref": "GoogleCloudApigeeV1NodeConfig"
        },
        "type": {
          "enum": [
            "ENVIRONMENT_TYPE_UNSPECIFIED",
            "BASE",
            "INTERMEDIATE",
            "COMPREHENSIVE"
          ],
          "enumDescriptions": [
            "Environment type not specified.",
            "This is the default type. Base environment has limited capacity and capabilities and are usually used when you are getting started with Apigee or while experimenting. Refer to Apigee's public documentation for more details.",
            "Intermediate environment supports API management features and higher capacity than Base environment. Refer to Apigee's public documentation for more details.",
            "Comprehensive environment supports advanced capabilites and even higher capacity than Intermediate environment. Refer to Apigee's public documentation for more details."
          ],
          "type": "string",
          "description": "Optional. EnvironmentType selected for the environment."
        },
        "clientIpResolutionConfig": {
          "description": "Optional. The algorithm to resolve IP. This will affect Analytics, API Security, and other features that use the client ip. To remove a client ip resolution config, update the field to an empty value. Example: '{ \"clientIpResolutionConfig\" = {} }' For more information, see: https://cloud.google.com/apigee/docs/api-platform/system-administration/client-ip-resolution.",
          "$ref": "GoogleCloudApigeeV1EnvironmentClientIPResolutionConfig"
        },
        "hasAttachedFlowHooks": {
          "type": "boolean"
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the environment."
        },
        "lastModifiedAt": {
          "type": "string",
          "format": "int64",
          "description": "Output only. Last modification time of this environment as milliseconds since epoch.",
          "readOnly": true
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name for this environment."
        },
        "apiProxyType": {
          "enum": [
            "API_PROXY_TYPE_UNSPECIFIED",
            "PROGRAMMABLE",
            "CONFIGURABLE"
          ],
          "type": "string",
          "description": "Optional. API Proxy type supported by the environment. The type can be set when creating the Environment and cannot be changed.",
          "enumDescriptions": [
            "API proxy type not specified.",
            "Programmable API Proxies enable you to develop APIs with highly flexible behavior using bundled policy configuration and one or more programming languages to describe complex sequential and/or conditional flows of logic.",
            "Configurable API Proxies enable you to develop efficient APIs using simple configuration while complex execution control flow logic is handled by Apigee. This type only works with the ARCHIVE deployment type and cannot be combined with the PROXY deployment type."
          ]
        }
      }
    },
    "GoogleCloudApigeeV1TestDatastoreResponse": {
      "id": "GoogleCloudApigeeV1TestDatastoreResponse",
      "type": "object",
      "properties": {
        "error": {
          "readOnly": true,
          "description": "Output only. Error message of test connection failure",
          "type": "string"
        },
        "state": {
          "description": "Output only. It could be `completed` or `failed`",
          "readOnly": true,
          "type": "string"
        }
      },
      "description": "The response for TestDatastore"
    },
    "GoogleCloudApigeeV1RuntimeTraceConfig": {
      "properties": {
        "overrides": {
          "items": {
            "$ref": "GoogleCloudApigeeV1RuntimeTraceConfigOverride"
          },
          "type": "array",
          "description": "List of trace configuration overrides for spicific API proxies."
        },
        "spanSemantics": {
          "enumDescriptions": [
            "Semantics unspecified. Defaults to LEGACY.",
            "Uses Apigee legacy span and attribute names.",
            "Uses OpenTelemetry semantic-convention-aligned span and attribute names."
          ],
          "enum": [
            "SPAN_SEMANTICS_UNSPECIFIED",
            "LEGACY",
            "OTEL"
          ],
          "description": "Optional. The span semantics to use. Configuration Requirements (if `span_semantics` is `OTEL`): - `trace_protocol` must be `OTLP`.",
          "type": "string"
        },
        "openTelemetryProtocolEnabled": {
          "description": "Optional. If `true`, the runtime uses OpenTelemetry Protocol (OTLP) to send trace data. Configuration Requirements (if `open_telemetry_protocol_enabled` is `true`): - Allowed `Exporter`s: `CLOUD_TRACE` or `OPEN_TELEMETRY_COLLECTOR`. - If `Exporter` is `OPEN_TELEMETRY_COLLECTOR`: - `endpoint` refers to a valid OTLP collector URL. - If `Exporter` is `CLOUD_TRACE`: - `endpoint` refers to a valid project ID Deprecated: Use trace_protocol instead.",
          "deprecated": true,
          "type": "boolean"
        },
        "revisionCreateTime": {
          "description": "The timestamp that the revision was created or updated.",
          "format": "google-datetime",
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "Name of the trace config in the following format: `organizations/{org}/environment/{env}/traceConfig`"
        },
        "traceProtocol": {
          "enum": [
            "TRACE_PROTOCOL_UNSPECIFIED",
            "OPEN_CENSUS",
            "OTLP"
          ],
          "type": "string",
          "description": "Optional. The trace protocol to use.",
          "enumDescriptions": [
            "Protocol unspecified. Defaults to OPEN_CENSUS.",
            "Uses OpenCensus protocol.",
            "Uses OpenTelemetry Protocol (OTLP)."
          ]
        },
        "otelCollectorSecurityScheme": {
          "enumDescriptions": [
            "Unspecified. Behavior is identical to NONE.",
            "Default. Unauthenticated OTLP/HTTP export. Preserves today's behavior byte-for-byte for existing configurations.",
            "Mutual TLS via customer PKI. Cert material is stored in Apigee Keystores/Truststores and referenced by resource ID in `mtls_config` (same mechanism as TargetServer.tls_info)."
          ],
          "enum": [
            "OTEL_COLLECTOR_SECURITY_SCHEME_UNSPECIFIED",
            "NONE",
            "MTLS"
          ],
          "description": "Optional. Security scheme for the outbound connection to the customer-owned OpenTelemetry Collector. Only meaningful when `exporter` is `OPEN_TELEMETRY_COLLECTOR`. Runtime consumers unaware of a value should treat it as `OTEL_COLLECTOR_SECURITY_SCHEME_UNSPECIFIED` (== NONE).",
          "type": "string"
        },
        "revisionId": {
          "description": "Revision number which can be used by the runtime to detect if the trace config has changed between two versions.",
          "type": "string"
        },
        "exporter": {
          "type": "string",
          "enumDescriptions": [
            "Exporter unspecified",
            "Exports events to Jaeger. Compatible with OpenCensus protocol.",
            "Exports events to Cloud Trace. Compatible with OpenCensus protocol.",
            "OpenTelemetry Collector. Compatible with OpenTelemetry protocol.",
            "Exports events to Cloud Trace. Compatible with OpenTelemetry protocol."
          ],
          "enum": [
            "EXPORTER_UNSPECIFIED",
            "JAEGER",
            "CLOUD_TRACE",
            "OPEN_TELEMETRY_COLLECTOR",
            "OPEN_TELEMETRY_CLOUD_TRACE"
          ],
          "description": "Exporter that is used to view the distributed trace captured using OpenCensus. An exporter sends traces to any backend that is capable of consuming them. Recorded spans can be exported by registered exporters."
        },
        "endpoint": {
          "description": "Endpoint of the exporter.",
          "type": "string"
        },
        "samplingConfig": {
          "description": "Trace configuration for all API proxies in an environment.",
          "$ref": "GoogleCloudApigeeV1RuntimeTraceSamplingConfig"
        },
        "mTlsConfig": {
          "$ref": "GoogleCloudApigeeV1RuntimeTraceConfigOtelMtlsConfig",
          "description": "Optional. mTLS configuration for the OTel Collector endpoint. Required when `otel_collector_security_scheme` is `MTLS`; must be absent otherwise."
        }
      },
      "description": "NEXT ID: 13 RuntimeTraceConfig defines the configurations for distributed trace in an environment.",
      "type": "object",
      "id": "GoogleCloudApigeeV1RuntimeTraceConfig"
    },
    "GoogleCloudApigeeV1GenerateUploadUrlResponse": {
      "type": "object",
      "id": "GoogleCloudApigeeV1GenerateUploadUrlResponse",
      "properties": {
        "uploadUri": {
          "description": "The Google Cloud Storage signed URL that can be used to upload a new Archive zip file.",
          "type": "string"
        }
      },
      "description": "Response for GenerateUploadUrl method."
    },
    "GoogleCloudApigeeV1AsyncQuery": {
      "properties": {
        "self": {
          "type": "string",
          "description": "Self link of the query. Example: `/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd` or following format if query is running at host level: `/organizations/myorg/hostQueries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd`"
        },
        "resultRows": {
          "format": "int64",
          "description": "ResultRows is available only after the query is completed.",
          "type": "string"
        },
        "state": {
          "type": "string",
          "description": "Query state could be \"enqueued\", \"running\", \"completed\", \"failed\"."
        },
        "result": {
          "description": "Result is available only after the query is completed.",
          "$ref": "GoogleCloudApigeeV1AsyncQueryResult"
        },
        "executionTime": {
          "type": "string",
          "description": "ExecutionTime is available only after the query is completed."
        },
        "error": {
          "description": "Error is set when query fails.",
          "type": "string"
        },
        "envgroupHostname": {
          "description": "Hostname is available only when query is executed at host level.",
          "type": "string"
        },
        "updated": {
          "type": "string",
          "description": "Last updated timestamp for the query."
        },
        "resultFileSize": {
          "type": "string",
          "description": "ResultFileSize is available only after the query is completed."
        },
        "created": {
          "type": "string",
          "description": "Creation time of the query."
        },
        "reportDefinitionId": {
          "description": "Asynchronous Report ID.",
          "type": "string"
        },
        "queryParams": {
          "description": "Contains information like metrics, dimenstions etc of the AsyncQuery.",
          "$ref": "GoogleCloudApigeeV1QueryMetadata"
        },
        "name": {
          "type": "string",
          "description": "Asynchronous Query Name."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1AsyncQuery"
    },
    "GoogleCloudApigeeV1SecurityProfileV2ProfileAssessmentConfigApiHubGatewayTypeArray": {
      "type": "object",
      "description": "Message for the array of API Hub Gateway Types.",
      "properties": {
        "gatewayTypes": {
          "type": "array",
          "description": "Required. The array of API Hub Gateway Types.",
          "items": {
            "type": "string",
            "enumDescriptions": [
              "Gateway type is not specified.",
              "Gateway is Apigee X for API Hub.",
              "Gateway is Apigee Hybrid for API Hub.",
              "Gateway is Apigee Edge for API Hub.",
              "Gateway is Apigee OPDK for API Hub."
            ],
            "enum": [
              "API_HUB_GATEWAY_TYPE_UNSPECIFIED",
              "APIGEE_X",
              "APIGEE_HYBRID",
              "APIGEE_EDGE",
              "APIGEE_OPDK"
            ]
          }
        }
      },
      "id": "GoogleCloudApigeeV1SecurityProfileV2ProfileAssessmentConfigApiHubGatewayTypeArray"
    },
    "GoogleCloudApigeeV1GetSyncAuthorizationRequest": {
      "type": "object",
      "properties": {},
      "id": "GoogleCloudApigeeV1GetSyncAuthorizationRequest",
      "description": "Request for GetSyncAuthorization."
    },
    "GoogleCloudApigeeV1Deployment": {
      "description": "Deployment represents a deployment of an API proxy or shared flow.",
      "id": "GoogleCloudApigeeV1Deployment",
      "type": "object",
      "properties": {
        "revision": {
          "type": "string",
          "description": "API proxy revision."
        },
        "state": {
          "description": "Current state of the deployment. **Note**: This field is displayed only when viewing deployment status.",
          "enum": [
            "RUNTIME_STATE_UNSPECIFIED",
            "READY",
            "PROGRESSING",
            "ERROR"
          ],
          "enumDescriptions": [
            "This value should never be returned.",
            "Runtime has loaded the deployment.",
            "Deployment is not fully ready in the runtime.",
            "Encountered an error with the deployment that requires intervention."
          ],
          "type": "string"
        },
        "serviceAccount": {
          "description": "The full resource name of Cloud IAM Service Account that this deployment is using, eg, `projects/-/serviceAccounts/{email}`.",
          "type": "string"
        },
        "routeConflicts": {
          "description": "Conflicts in the desired state routing configuration. The presence of conflicts does not cause the state to be `ERROR`, but it will mean that some of the deployment's base paths are not routed to its environment. If the conflicts change, the state will transition to `PROGRESSING` until the latest configuration is rolled out to all instances. **Note**: This field is displayed only when viewing deployment status.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1DeploymentChangeReportRoutingConflict"
          }
        },
        "instances": {
          "description": "Status reported by each runtime instance. **Note**: This field is displayed only when viewing deployment status.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1InstanceDeploymentStatus"
          }
        },
        "environment": {
          "type": "string",
          "description": "Environment."
        },
        "pods": {
          "description": "Status reported by runtime pods. **Note**: **This field is deprecated**. Runtime versions 1.3 and above report instance level status rather than pod status.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1PodStatus"
          }
        },
        "errors": {
          "type": "array",
          "description": "Errors reported for this deployment. Populated only when state == ERROR. **Note**: This field is displayed only when viewing deployment status.",
          "items": {
            "$ref": "GoogleRpcStatus"
          }
        },
        "proxyDeploymentType": {
          "type": "string",
          "enum": [
            "PROXY_DEPLOYMENT_TYPE_UNSPECIFIED",
            "STANDARD",
            "EXTENSIBLE"
          ],
          "enumDescriptions": [
            "Default value till public preview. After public preview this value should not be returned.",
            "Deployment will be of type Standard if only Standard proxies are used",
            "Proxy will be of type Extensible if deployments uses one or more Extensible proxies"
          ],
          "readOnly": true,
          "description": "Output only. The type of the deployment (standard or extensible) Deployed proxy revision will be marked as extensible in following 2 cases. 1. The deployed proxy revision uses extensible policies. 2. If a environment supports flowhooks and flow hook is configured."
        },
        "deployStartTime": {
          "description": "Time the API proxy was marked `deployed` in the control plane in millisconds since epoch.",
          "type": "string",
          "format": "int64"
        },
        "apiProxy": {
          "description": "API proxy.",
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1ListSecurityIncidentsResponse": {
      "properties": {
        "securityIncidents": {
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityIncident"
          },
          "type": "array",
          "description": "List of security incidents in the organization"
        },
        "nextPageToken": {
          "description": "A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      },
      "description": "Response for ListSecurityIncidents.",
      "type": "object",
      "id": "GoogleCloudApigeeV1ListSecurityIncidentsResponse"
    },
    "GoogleCloudApigeeV1ApiSecurityConfig": {
      "id": "GoogleCloudApigeeV1ApiSecurityConfig",
      "description": "Configurations of the API Security add-on.",
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Flag that specifies whether the API security add-on is enabled."
        },
        "expiresAt": {
          "readOnly": true,
          "description": "Output only. Time at which the API Security add-on expires in milliseconds since epoch. If unspecified, the add-on will never expire.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "GoogleCloudApigeeV1ListSecurityReportsResponse": {
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "If the number of security reports exceeded the page size requested, the token can be used to fetch the next page in a subsequent call. If the response is the last page and there are no more reports to return this field is left empty."
        },
        "securityReports": {
          "description": "The security reports belong to requested resource name.",
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityReport"
          },
          "type": "array"
        }
      },
      "type": "object",
      "description": "The response for SecurityReports.",
      "id": "GoogleCloudApigeeV1ListSecurityReportsResponse"
    },
    "GoogleCloudApigeeV1TraceSamplingConfig": {
      "id": "GoogleCloudApigeeV1TraceSamplingConfig",
      "properties": {
        "samplingRate": {
          "type": "number",
          "format": "float",
          "description": "Field sampling rate. This value is only applicable when using the PROBABILITY sampler. The supported values are \u003e 0 and \u003c= 0.5."
        },
        "sampler": {
          "enum": [
            "SAMPLER_UNSPECIFIED",
            "OFF",
            "PROBABILITY"
          ],
          "enumDescriptions": [
            "Sampler unspecified.",
            "OFF means distributed trace is disabled, or the sampling probability is 0.",
            "PROBABILITY means traces are captured on a probability that defined by sampling_rate. The sampling rate is limited to 0 to 0.5 when this is set."
          ],
          "type": "string",
          "description": "Sampler of distributed tracing. OFF is the default value."
        }
      },
      "description": "TraceSamplingConfig represents the detail settings of distributed tracing. Only the fields that are defined in the distributed trace configuration can be overridden using the distribute trace configuration override APIs.",
      "type": "object"
    },
    "GoogleCloudApigeeV1SecurityActionConditionConfig": {
      "properties": {
        "accessTokens": {
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of access_tokens. Limit 1000 per action.",
          "type": "array"
        },
        "userAgents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of user agents to deny. We look for exact matches. Limit 50 per action."
        },
        "asns": {
          "items": {
            "type": "string",
            "format": "int64"
          },
          "description": "Optional. A list of ASN numbers to act on, e.g. 23. https://en.wikipedia.org/wiki/Autonomous_system_(Internet) This uses int64 instead of uint32 because of https://linter.aip.dev/141/forbidden-types.",
          "type": "array"
        },
        "apiProducts": {
          "description": "Optional. A list of API Products. Limit 1000 per action.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ipAddressRanges": {
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of IP addresses. This could be either IPv4 or IPv6. Limited to 100 per action.",
          "type": "array"
        },
        "httpMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Act only on particular HTTP methods. E.g. A read-only API can block POST/PUT/DELETE methods. Accepted values are: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE and PATCH."
        },
        "botReasons": {
          "description": "Optional. A list of Bot Reasons. Current options: Flooder, Brute Guessor, Static Content Scraper, OAuth Abuser, Robot Abuser, TorListRule, Advanced Anomaly Detection, Advanced API Scraper, Search Engine Crawlers, Public Clouds, Public Cloud AWS, Public Cloud Azure, and Public Cloud Google.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "developerApps": {
          "type": "array",
          "description": "Optional. A list of developer apps. Limit 1000 per action.",
          "items": {
            "type": "string"
          }
        },
        "apiKeys": {
          "description": "Optional. A list of API keys. Limit 1000 per action.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "developers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of developers. Limit 1000 per action."
        },
        "regionCodes": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Optional. A list of countries/region codes to act on, e.g. US. This follows https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1SecurityActionConditionConfig",
      "description": "The following are a list of conditions. A valid SecurityAction must contain at least one condition. Within a condition, each element is ORed. Across conditions elements are ANDed. For example if a SecurityAction has the following: ip_address_ranges: [\"ip1\", \"ip2\"] and bot_reasons: [\"Flooder\", \"Robot Abuser\"] then this is interpreted as: enforce the action if the incoming request has ((ip_address_ranges = \"ip1\" OR ip_address_ranges = \"ip2\") AND (bot_reasons=\"Flooder\" OR bot_reasons=\"Robot Abuser\")). Conditions other than ip_address_ranges and bot_reasons cannot be ANDed."
    },
    "GoogleCloudApigeeV1AccessRemove": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "success": {
          "type": "boolean"
        }
      },
      "description": "Remove action. For example, \"Remove\" : { \"name\" : \"target.name\", \"success\" : true }",
      "id": "GoogleCloudApigeeV1AccessRemove"
    },
    "GoogleCloudApigeeV1LlmTokenQuota": {
      "description": "LLM Token Quota contains the essential parameters needed that can be applied on the resources, methods, models, API source combination associated with this API product. While LLM Token Quota is optional, setting it prevents requests from exceeding the provisioned parameters.",
      "type": "object",
      "properties": {
        "timeUnit": {
          "description": "Optional. Time unit defined for the `interval`. Valid values include `minute`, `hour`, `day`, or `month`. If `limit` and `interval` are valid, the default value is `hour`; otherwise, the default is null.",
          "type": "string"
        },
        "interval": {
          "description": "Required. Time interval over which the number of request messages is calculated.",
          "type": "string"
        },
        "limit": {
          "type": "string",
          "description": "Required. Upper limit of LLM tokens allowed for the time interval and time unit specified. Requests exceeding this limit will be rejected."
        }
      },
      "id": "GoogleCloudApigeeV1LlmTokenQuota"
    },
    "GoogleCloudApigeeV1ApimServiceExtensionNetworkConfig": {
      "properties": {
        "region": {
          "description": "Required. The region for the PSC NEG.",
          "type": "string"
        },
        "subnet": {
          "type": "string",
          "description": "Required. The subnet for the PSC NEG. Format: projects/{project}/regions/{region}/subnetworks/{subnet}"
        }
      },
      "id": "GoogleCloudApigeeV1ApimServiceExtensionNetworkConfig",
      "type": "object",
      "description": "Network configuration for the APIM service extension."
    },
    "GoogleCloudApigeeV1QueryTabularStatsRequest": {
      "type": "object",
      "description": "Request payload representing the query to be run for fetching security statistics as rows.",
      "id": "GoogleCloudApigeeV1QueryTabularStatsRequest",
      "properties": {
        "pageSize": {
          "type": "integer",
          "description": "Page size represents the number of rows.",
          "format": "int32"
        },
        "metrics": {
          "description": "Required. List of metrics and their aggregations.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1MetricAggregation"
          }
        },
        "timeRange": {
          "description": "Time range for the stats.",
          "$ref": "GoogleTypeInterval"
        },
        "dimensions": {
          "type": "array",
          "description": "Required. List of dimension names to group the aggregations by.",
          "items": {
            "type": "string"
          }
        },
        "filter": {
          "description": "Filter further on specific dimension values. Follows the same grammar as custom report's filter expressions. Example, apiproxy eq 'foobar'. https://cloud.google.com/apigee/docs/api-platform/analytics/analytics-reference#filters",
          "type": "string"
        },
        "pageToken": {
          "type": "string",
          "description": "Identifies a sequence of rows."
        }
      }
    },
    "GoogleIamV1TestIamPermissionsResponse": {
      "properties": {
        "permissions": {
          "description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "id": "GoogleIamV1TestIamPermissionsResponse",
      "description": "Response message for `TestIamPermissions` method."
    },
    "GoogleCloudApigeeV1ProfileConfig": {
      "properties": {
        "categories": {
          "description": "List of categories of profile config.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1ProfileConfigCategory"
          }
        }
      },
      "id": "GoogleCloudApigeeV1ProfileConfig",
      "type": "object",
      "description": "ProfileConfig defines a set of categories and policies which will be used to compute security score."
    },
    "GoogleCloudApigeeV1SecurityProfileEnvironmentAssociation": {
      "description": "Represents a SecurityProfileEnvironmentAssociation resource.",
      "type": "object",
      "properties": {
        "attachTime": {
          "type": "string",
          "description": "Output only. The time when environment was attached to the security profile.",
          "readOnly": true,
          "format": "google-datetime"
        },
        "securityProfileRevisionId": {
          "deprecated": true,
          "description": "DEPRECATED: DO NOT USE Revision ID of the security profile.",
          "type": "string",
          "format": "int64"
        },
        "name": {
          "description": "Immutable. The environment ID that the profile is attached to, e.g. `prod`. This is the bare environment ID, not a full resource name; see b/288477507.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1SecurityProfileEnvironmentAssociation"
    },
    "GoogleCloudApigeeV1ListApiDebugSessionsResponse": {
      "type": "object",
      "description": "Response for ListApiDebugSessions.",
      "properties": {
        "sessions": {
          "description": "Session info that includes debug session ID, environment ID, api proxy revision ID and the first transaction creation timestamp.",
          "items": {
            "$ref": "GoogleCloudApigeeV1ApiDebugSession"
          },
          "type": "array"
        },
        "nextPageToken": {
          "description": "Page token that you can include in a ListApiDebugSessionsRequest to retrieve the next page. If omitted, no subsequent pages exist.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1ListApiDebugSessionsResponse"
    },
    "EdgeConfigstoreBundleBadBundleViolation": {
      "description": "A message type used to describe a single bundle validation error.",
      "id": "EdgeConfigstoreBundleBadBundleViolation",
      "type": "object",
      "properties": {
        "filename": {
          "description": "The filename (including relative path from the bundle root) in which the error occurred.",
          "type": "string"
        },
        "description": {
          "description": "A description of why the bundle is invalid and how to fix it.",
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1ListAppGroupsResponse": {
      "id": "GoogleCloudApigeeV1ListAppGroupsResponse",
      "description": "ListAppGroupsResponse contains the 0 or more AppGroups, along with the optional page token and the total count of apps.",
      "properties": {
        "totalSize": {
          "description": "Total count of AppGroups.",
          "format": "int32",
          "type": "integer"
        },
        "nextPageToken": {
          "description": "Token that can be sent as `next_page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "appGroups": {
          "type": "array",
          "description": "List of AppGroups.",
          "items": {
            "$ref": "GoogleCloudApigeeV1AppGroup"
          }
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1DeveloperAppKey": {
      "properties": {
        "issuedAt": {
          "type": "string",
          "description": "Time the developer app was created in milliseconds since epoch.",
          "format": "int64"
        },
        "consumerKey": {
          "description": "Consumer key.",
          "type": "string"
        },
        "attributes": {
          "description": "List of attributes associated with the credential.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          }
        },
        "scopes": {
          "items": {
            "type": "string"
          },
          "description": "Scopes to apply to the app. The specified scope names must already be defined for the API product that you associate with the app.",
          "type": "array"
        },
        "status": {
          "description": "Status of the credential. Valid values include `approved` or `revoked`.",
          "type": "string"
        },
        "consumerSecret": {
          "type": "string",
          "description": "Secret key."
        },
        "apiProducts": {
          "type": "array",
          "description": "List of API products for which the credential can be used. **Note**: Do not specify the list of API products when creating a consumer key and secret for a developer app. Instead, use the UpdateDeveloperAppKey API to make the association after the consumer key and secret are created.",
          "items": {
            "type": "any"
          }
        },
        "expiresInSeconds": {
          "description": "Input only. Expiration time, in seconds, for the consumer key. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set.",
          "format": "int64",
          "type": "string"
        },
        "expiresAt": {
          "format": "int64",
          "description": "Time the developer app expires in milliseconds since epoch.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1DeveloperAppKey"
    },
    "GoogleCloudApigeeV1EnvironmentConfig": {
      "type": "object",
      "id": "GoogleCloudApigeeV1EnvironmentConfig",
      "properties": {
        "targets": {
          "type": "array",
          "description": "List of target servers in the environment. Disabled target servers are not displayed.",
          "items": {
            "$ref": "GoogleCloudApigeeV1TargetServerConfig"
          }
        },
        "arcConfigLocation": {
          "type": "string",
          "description": "The location for the config blob of API Runtime Control, aka Envoy Adapter, for op-based authentication as a URI, e.g. a Cloud Storage URI. This is only used by Envoy-based gateways."
        },
        "name": {
          "description": "Name of the environment configuration in the following format: `organizations/{org}/environments/{env}/configs/{config}`",
          "type": "string"
        },
        "revisionId": {
          "type": "string",
          "description": "Revision ID of the environment configuration. The higher the value, the more recently the configuration was deployed.",
          "format": "int64"
        },
        "clientIpResolutionConfig": {
          "description": "The algorithm to resolve IP.",
          "$ref": "GoogleCloudApigeeV1EnvironmentConfigClientIPResolutionConfig"
        },
        "featureFlags": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "Feature flags inherited from the organization and environment."
        },
        "dataCollectors": {
          "items": {
            "$ref": "GoogleCloudApigeeV1DataCollectorConfig"
          },
          "description": "List of data collectors used by the deployments in the environment.",
          "type": "array"
        },
        "deployments": {
          "type": "array",
          "description": "List of deployments in the environment.",
          "items": {
            "$ref": "GoogleCloudApigeeV1DeploymentConfig"
          }
        },
        "gatewayConfigLocation": {
          "type": "string",
          "description": "The location for the gateway config blob as a URI, e.g. a Cloud Storage URI. This is only used by Envoy-based gateways."
        },
        "deploymentGroups": {
          "description": "List of deployment groups in the environment.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1DeploymentGroupConfig"
          }
        },
        "flowhooks": {
          "description": "List of flow hooks in the environment.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1FlowHookConfig"
          }
        },
        "resourceReferences": {
          "items": {
            "$ref": "GoogleCloudApigeeV1ReferenceConfig"
          },
          "type": "array",
          "description": "List of resource references in the environment."
        },
        "envScopedRevisionId": {
          "type": "string",
          "description": "Revision ID for environment-scoped resources (e.g. target servers, keystores) in this config. This ID will increment any time a resource not scoped to a deployment group changes.",
          "format": "int64"
        },
        "sequenceNumber": {
          "type": "string",
          "description": "DEPRECATED: Use revision_id.",
          "format": "int64"
        },
        "traceConfig": {
          "$ref": "GoogleCloudApigeeV1RuntimeTraceConfig",
          "description": "Trace configurations. Contains config for the environment and config overrides for specific API proxies."
        },
        "resources": {
          "type": "array",
          "description": "List of resource versions in the environment.",
          "items": {
            "$ref": "GoogleCloudApigeeV1ResourceConfig"
          }
        },
        "debugMask": {
          "description": "Debug mask that applies to all deployments in the environment.",
          "$ref": "GoogleCloudApigeeV1DebugMask"
        },
        "forwardProxyUri": {
          "description": "The forward proxy's url to be used by the runtime. When set, runtime will send requests to the target via the given forward proxy. This is only used by programmable gateways.",
          "type": "string"
        },
        "provider": {
          "description": "Used by the Control plane to add context information to help detect the source of the document during diagnostics and debugging.",
          "type": "string"
        },
        "keystores": {
          "items": {
            "$ref": "GoogleCloudApigeeV1KeystoreConfig"
          },
          "type": "array",
          "description": "List of keystores in the environment."
        },
        "addonsConfig": {
          "description": "The latest runtime configurations for add-ons.",
          "$ref": "GoogleCloudApigeeV1RuntimeAddonsConfig"
        },
        "createTime": {
          "description": "Time that the environment configuration was created.",
          "type": "string",
          "format": "google-datetime"
        },
        "pubsubTopic": {
          "description": "Name of the PubSub topic for the environment.",
          "type": "string"
        },
        "uid": {
          "type": "string",
          "description": "Unique ID for the environment configuration. The ID will only change if the environment is deleted and recreated."
        }
      }
    },
    "GoogleCloudApigeeV1ListAppGroupAppsResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "Token that can be sent as `next_page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "appGroupApps": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1AppGroupApp"
          },
          "description": "List of AppGroup apps and their credentials."
        }
      },
      "id": "GoogleCloudApigeeV1ListAppGroupAppsResponse",
      "description": "Response for ListAppGroupApps"
    },
    "GoogleCloudApigeeV1LlmOperationGroup": {
      "description": "List of LLM operation configuration details associated with Apigee API proxies.",
      "id": "GoogleCloudApigeeV1LlmOperationGroup",
      "type": "object",
      "properties": {
        "operationConfigs": {
          "description": "Required. List of LLM operation configurations for either Apigee API proxies that are associated with this API product.",
          "items": {
            "$ref": "GoogleCloudApigeeV1LlmOperationConfig"
          },
          "type": "array"
        }
      }
    },
    "GoogleCloudApigeeV1ScoreComponent": {
      "description": "Component is an individual security element that is scored.",
      "type": "object",
      "id": "GoogleCloudApigeeV1ScoreComponent",
      "properties": {
        "recommendations": {
          "description": "List of recommendations to improve API security.",
          "items": {
            "$ref": "GoogleCloudApigeeV1ScoreComponentRecommendation"
          },
          "type": "array"
        },
        "drilldownPaths": {
          "description": "List of paths for next components.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "scorePath": {
          "type": "string",
          "description": "Path of the component. Example: /org@myorg/envgroup@myenvgroup/proxies/proxy@myproxy"
        },
        "score": {
          "type": "integer",
          "format": "int32",
          "description": "Score for the component."
        },
        "dataCaptureTime": {
          "type": "string",
          "description": "Time in the requested time period when data was last captured to compute the score.",
          "format": "google-datetime"
        },
        "calculateTime": {
          "description": "Time when score was calculated.",
          "format": "google-datetime",
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1ListApiCategoriesResponse": {
      "description": "The response for `ListApiCategoriesRequest`. Next ID: 6",
      "properties": {
        "data": {
          "items": {
            "$ref": "GoogleCloudApigeeV1ApiCategory"
          },
          "type": "array",
          "description": "The API category resources."
        },
        "requestId": {
          "type": "string",
          "description": "Unique ID of the request."
        },
        "status": {
          "description": "Status of the operation.",
          "type": "string"
        },
        "message": {
          "type": "string",
          "description": "Description of the operation."
        },
        "errorCode": {
          "type": "string",
          "description": "Unique error code for the request, if any."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1ListApiCategoriesResponse"
    },
    "GoogleCloudApigeeV1EnableSecurityActionRequest": {
      "id": "GoogleCloudApigeeV1EnableSecurityActionRequest",
      "properties": {},
      "type": "object",
      "description": "Message to enable a disabled SecurityAction."
    },
    "GoogleCloudApigeeV1ApiProxyRevision": {
      "description": "API proxy revision.",
      "type": "object",
      "id": "GoogleCloudApigeeV1ApiProxyRevision",
      "properties": {
        "sharedFlows": {
          "description": "List of the shared flows included in the API proxy revision.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "targetEndpoints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of TargetEndpoints in the `/targets` directory of the API proxy. Typically, this element is included only when the API proxy was created using the Edge UI. This is a 'manifest' setting designed to provide visibility into the contents of the API proxy."
        },
        "revision": {
          "description": "API proxy revision.",
          "type": "string"
        },
        "integrationEndpoints": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "List of IntegrationEndpoints in the '/integration-endpoints' directory of the API proxy. This is a 'manifest' setting designed to provide visibility into the contents of the API proxy."
        },
        "proxyEndpoints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of ProxyEndpoints in the `/proxies` directory of the API proxy. Typically, this element is included only when the API proxy was created using the Edge UI. This is a 'manifest' setting designed to provide visibility into the contents of the API proxy."
        },
        "targets": {
          "items": {
            "type": "string"
          },
          "description": "List of the targets included in the API proxy revision.",
          "type": "array"
        },
        "proxies": {
          "description": "List of proxy names included in the API proxy revision.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable name of the API proxy."
        },
        "contextInfo": {
          "type": "string",
          "description": "Revision number, app name, and organization for the API proxy."
        },
        "teams": {
          "description": "List of the teams included in the API proxy revision.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "basepaths": {
          "description": "Base URL of the API proxy.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "type": {
          "type": "string",
          "description": "Type. Set to `Application`. Maintained for compatibility with the Apigee Edge API."
        },
        "resourceFiles": {
          "$ref": "GoogleCloudApigeeV1ResourceFiles",
          "description": "List of resource files included in the API proxy revision."
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Time that the API proxy revision was last modified in milliseconds since epoch.",
          "format": "int64"
        },
        "policies": {
          "items": {
            "type": "string"
          },
          "description": "List of policy names included in the API proxy revision..",
          "type": "array"
        },
        "mcp": {
          "readOnly": true,
          "description": "Output only. Whether this proxy revision is detected as an MCP (Model Context Protocol) proxy. A proxy revision is identified as MCP if it has a proxy endpoint with the `/mcp` base path that routes to the MCP target URL.",
          "type": "boolean"
        },
        "targetServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of TargetServers referenced in any TargetEndpoint in the API proxy. Typically, you will see this element only when the API proxy was created using the Edge UI. This is a 'manifest' setting designed to provide visibility into the contents of the API proxy."
        },
        "name": {
          "description": "Name of the API proxy.",
          "type": "string"
        },
        "archive": {
          "description": "Output only. The archive that generated this proxy revision. This field is only present on proxy revisions that were generated by an archive. Proxies generated by archives cannot be updated, deleted, or deployed to other environments. Format: `organizations/*/environments/*/archiveDeployments/*`",
          "type": "string",
          "readOnly": true
        },
        "hasExtensiblePolicy": {
          "readOnly": true,
          "description": "Output only. This field will be marked as true if revision contains any policies marked as extensible.",
          "type": "boolean"
        },
        "configurationVersion": {
          "$ref": "GoogleCloudApigeeV1ConfigVersion",
          "description": "Version of the API proxy configuration schema to which the API proxy conforms. Currently, the only supported value is 4.0 (`majorVersion.minorVersion`). This setting may be used in the future to track the evolution of the API proxy format."
        },
        "spec": {
          "type": "string",
          "description": "OpenAPI Specification that is associated with the API proxy. The value is set to a URL or to a path in the specification store."
        },
        "createdAt": {
          "format": "int64",
          "description": "Time that the API proxy revision was created in milliseconds since epoch.",
          "type": "string"
        },
        "entityMetaDataAsProperties": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata describing the API proxy revision as a key-value map.",
          "type": "object"
        },
        "description": {
          "type": "string",
          "description": "Description of the API proxy revision."
        },
        "resources": {
          "description": "List of the resources included in the API proxy revision formatted as \"{type}://{name}\".",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      }
    },
    "GoogleCloudApigeeV1ListInstancesResponse": {
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "Page token that you can include in a ListInstance request to retrieve the next page of content. If omitted, no subsequent pages exist."
        },
        "instances": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Instance"
          },
          "description": "Instances in the specified organization."
        }
      },
      "type": "object",
      "description": "Response for ListInstances.",
      "id": "GoogleCloudApigeeV1ListInstancesResponse"
    },
    "GoogleCloudApigeeV1McpServerConfig": {
      "id": "GoogleCloudApigeeV1McpServerConfig",
      "description": "Deployed MCP server configuration for an organization. Response for GetMcpServerConfig. Org-scoped singleton: each organization has exactly one McpServerConfig. Multiple logical MCP servers within the same org are expressed inside the Cloud Storage blob (McpServerConfigData.hosts map), not as multiple McpServerConfig resources.",
      "type": "object",
      "properties": {
        "revisionId": {
          "type": "string",
          "readOnly": true,
          "format": "int64",
          "description": "Output only. Revision ID that defines the ordering on McpServerConfig revisions. Higher values indicate more recently deployed configurations. Monotonically non-decreasing per organization. Mirrors IngressConfig.revision_id."
        },
        "name": {
          "description": "Identifier. Resource name in the singleton form: organizations/{org}/mcpServerConfig",
          "type": "string"
        },
        "mcpServerConfigDataLocation": {
          "description": "Output only. Cloud Storage URI to the McpServerConfigData blob in the Apigee tenant project bucket. The sidecar fetches this URI using Cloud Storage, and deserializes the. protojson blob to McpServerConfigData. Treat this as an opaque URI — its format may change. Example: gs://{apigee-tp-bucket}/apigee-mcp-config-{org}-{revision_id}.json",
          "readOnly": true,
          "type": "string"
        },
        "revisionCreateTime": {
          "readOnly": true,
          "format": "google-datetime",
          "description": "Output only. Time at which this McpServerConfig revision was created. Mirrors IngressConfig.revision_create_time.",
          "type": "string"
        },
        "uid": {
          "description": "Output only. Unique ID for the McpServerConfig that will only change if the organization is deleted and recreated.",
          "type": "string",
          "readOnly": true
        }
      }
    },
    "GoogleCloudApigeeV1LlmOperation": {
      "description": "Represents the pairing of REST resource path, model and the actions (verbs) allowed on the resource path.",
      "type": "object",
      "properties": {
        "methods": {
          "description": "Optional. methods refers to the REST verbs as in https://httpwg.org/specs/rfc9110.html For example: GET, POST, PUT, DELETE, etc. They need to be in uppercase. When none specified, all verb types are allowed.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "model": {
          "description": "Required. LLM model name associated with the API proxy",
          "type": "string"
        },
        "resource": {
          "type": "string",
          "description": "Required. REST resource path associated with the API proxy or remote service."
        }
      },
      "id": "GoogleCloudApigeeV1LlmOperation"
    },
    "GoogleCloudApigeeV1SecurityReportResultView": {
      "type": "object",
      "properties": {
        "error": {
          "description": "Error message when there is a failure.",
          "type": "string"
        },
        "code": {
          "format": "int32",
          "description": "Error code when there is a failure.",
          "type": "integer"
        },
        "metadata": {
          "$ref": "GoogleCloudApigeeV1SecurityReportMetadata",
          "description": "Metadata contains information like metrics, dimenstions etc of the security report."
        },
        "rows": {
          "items": {
            "type": "any"
          },
          "type": "array",
          "description": "Rows of security report result. Each row is a JSON object. Example: {sum(message_count): 1, developer_app: \"(not set)\",…}"
        },
        "state": {
          "type": "string",
          "description": "State of retrieving ResultView."
        }
      },
      "id": "GoogleCloudApigeeV1SecurityReportResultView",
      "description": "The response for security report result view APIs."
    },
    "GoogleCloudApigeeV1ProfileConfigAbuse": {
      "description": "Checks for abuse, which includes any requests sent to the API for purposes other than what it is intended for, such as high volumes of requests, data scraping, and abuse related to authorization.",
      "type": "object",
      "properties": {},
      "id": "GoogleCloudApigeeV1ProfileConfigAbuse"
    },
    "GoogleCloudApigeeV1EnvironmentGroup": {
      "properties": {
        "createdAt": {
          "description": "Output only. The time at which the environment group was created as milliseconds since epoch.",
          "readOnly": true,
          "type": "string",
          "format": "int64"
        },
        "lastModifiedAt": {
          "description": "Output only. The time at which the environment group was last updated as milliseconds since epoch.",
          "type": "string",
          "format": "int64",
          "readOnly": true
        },
        "name": {
          "description": "ID of the environment group.",
          "type": "string"
        },
        "hostnames": {
          "description": "Required. Host names for this environment group.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "state": {
          "type": "string",
          "enumDescriptions": [
            "Resource is in an unspecified state.",
            "Resource is being created.",
            "Resource is provisioned and ready to use.",
            "The resource is being deleted.",
            "The resource is being updated."
          ],
          "description": "Output only. State of the environment group. Values other than ACTIVE means the resource is not ready to use.",
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "ACTIVE",
            "DELETING",
            "UPDATING"
          ],
          "readOnly": true
        }
      },
      "description": "EnvironmentGroup configuration. An environment group is used to group one or more Apigee environments under a single host name.",
      "type": "object",
      "id": "GoogleCloudApigeeV1EnvironmentGroup"
    },
    "GoogleCloudApigeeV1DnsZone": {
      "id": "GoogleCloudApigeeV1DnsZone",
      "type": "object",
      "properties": {
        "createTime": {
          "format": "google-datetime",
          "type": "string",
          "readOnly": true,
          "description": "Output only. The time that this resource was created on the server."
        },
        "domain": {
          "description": "Required. The domain name for hosts in this private zone, for instance \"example.com.\".",
          "type": "string"
        },
        "state": {
          "type": "string",
          "enumDescriptions": [
            "Resource is in an unspecified state.",
            "Resource is being created.",
            "Resource is provisioned and ready to use.",
            "The resource is being deleted.",
            "The resource is being updated."
          ],
          "readOnly": true,
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "ACTIVE",
            "DELETING",
            "UPDATING"
          ],
          "description": "Output only. State of the DNS Peering. Values other than `ACTIVE` mean the resource is not ready to use."
        },
        "updateTime": {
          "description": "Output only. The time that this resource was updated on the server.",
          "format": "google-datetime",
          "type": "string",
          "readOnly": true
        },
        "name": {
          "description": "Identifier. Unique name for the resource. Defined by the server Format: \"organizations/{organization}/dnsZones/{dns_zone}\".",
          "type": "string"
        },
        "peeringConfig": {
          "description": "DNS PEERING zone configuration.",
          "$ref": "GoogleCloudApigeeV1DnsZonePeeringConfig"
        },
        "description": {
          "description": "Required. Description of the resource. String of at most 1024 characters associated with this resource for the user's convenience.",
          "type": "string"
        }
      },
      "description": "A DNS zone is a resource under an Apigee organization that is used to create a DNS peering with Apigee's network. DNS peering will let Apigee instances resolve the hostnames created in a peered network."
    },
    "GoogleCloudApigeeV1StatsEnvironmentStats": {
      "id": "GoogleCloudApigeeV1StatsEnvironmentStats",
      "description": "Encapsulates the environment wrapper: ``` \"environments\": [ { \"metrics\": [ { \"name\": \"sum(message_count)\", \"values\": [ \"2.52056245E8\" ] } ], \"name\": \"prod\" } ]```",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the environment."
        },
        "dimensions": {
          "description": "List of metrics grouped under dimensions.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1DimensionMetric"
          }
        },
        "metrics": {
          "items": {
            "$ref": "GoogleCloudApigeeV1Metric"
          },
          "type": "array",
          "description": "In the final response, only one of the following fields will be present based on the dimensions provided. If no dimensions are provided, then only top-level metrics is provided. If dimensions are included, then there will be a top-level dimensions field under environments which will contain metrics values and the dimension name. Example: ``` \"environments\": [ { \"dimensions\": [ { \"metrics\": [ { \"name\": \"sum(message_count)\", \"values\": [ \"2.14049521E8\" ] } ], \"name\": \"nit_proxy\" } ], \"name\": \"prod\" } ]``` or ```\"environments\": [ { \"metrics\": [ { \"name\": \"sum(message_count)\", \"values\": [ \"2.19026331E8\" ] } ], \"name\": \"prod\" } ]``` List of metric values."
        }
      }
    },
    "GoogleCloudApigeeV1IngressConfig": {
      "properties": {
        "revisionCreateTime": {
          "type": "string",
          "description": "Time at which the IngressConfig revision was created.",
          "format": "google-datetime"
        },
        "revisionId": {
          "description": "Revision id that defines the ordering on IngressConfig resources. The higher the revision, the more recently the configuration was deployed.",
          "type": "string",
          "format": "int64"
        },
        "name": {
          "description": "Name of the resource in the following format: `organizations/{org}/deployedIngressConfig`.",
          "type": "string"
        },
        "uid": {
          "description": "A unique id for the ingress config that will only change if the organization is deleted and recreated.",
          "type": "string"
        },
        "environmentGroups": {
          "items": {
            "$ref": "GoogleCloudApigeeV1EnvironmentGroupConfig"
          },
          "description": "List of environment groups in the organization.",
          "type": "array"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1IngressConfig"
    },
    "GoogleCloudApigeeV1ListSecurityMonitoringConditionsResponse": {
      "id": "GoogleCloudApigeeV1ListSecurityMonitoringConditionsResponse",
      "description": "Response for ListSecurityMonitoringConditions.",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "securityMonitoringConditions": {
          "description": "List of security monitoring conditions in the organization.",
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityMonitoringCondition"
          },
          "type": "array"
        }
      }
    },
    "GoogleCloudApigeeV1ApiProduct": {
      "properties": {
        "operationGroup": {
          "description": "Configuration used to group Apigee proxies or remote services with resources, method types, and quotas. The resource refers to the resource URI (excluding the base path). With this grouping, the API product creator is able to fine-tune and give precise control over which REST methods have access to specific resources and how many calls can be made (using the `quota` setting). **Note:** The `api_resources` setting cannot be specified for both the API product and operation group; otherwise the call will fail.",
          "$ref": "GoogleCloudApigeeV1OperationGroup"
        },
        "createdAt": {
          "description": "Response only. Creation time of this environment as milliseconds since epoch.",
          "type": "string",
          "format": "int64"
        },
        "llmOperationGroup": {
          "description": "Optional. Configuration used to group Apigee proxies with resources, method types, LLM model and quotas. The resource refers to the resource URI (excluding the base path). With this grouping, the API product creator is able to fine-tune and give precise control over which REST methods have access to specific resources, specific LLM model and how many calls can be made (using the `quota` setting). **Note:** The `api_resources` setting cannot be specified for both the API product and llm operation group; otherwise the call will fail.",
          "$ref": "GoogleCloudApigeeV1LlmOperationGroup"
        },
        "llmQuota": {
          "description": "Optional. Number of LLM tokens permitted per app by this API product for the specified `llm_quota_interval` and `llm_quota_time_unit`. For example, an `llm_quota` of 50,000, for an `llm_quota_interval` of 12 and an `llm_quota_time_unit` of hours means 50,000 llm tokens are allowed to be used every 12 hours.",
          "type": "string"
        },
        "displayName": {
          "description": "Name displayed in the UI or developer portal to developers registering for API access.",
          "type": "string"
        },
        "graphqlOperationGroup": {
          "description": "Configuration used to group Apigee proxies or remote services with graphQL operation name, graphQL operation type and quotas. This grouping allows us to precisely set quota for a particular combination of graphQL name and operation type for a particular proxy request. If graphQL name is not set, this would imply quota will be applied on all graphQL requests matching the operation type.",
          "$ref": "GoogleCloudApigeeV1GraphQLOperationGroup"
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Comma-separated list of OAuth scopes that are validated at runtime. Apigee validates that the scopes in any access token presented match the scopes defined in the OAuth policy associated with the API product."
        },
        "payloadOperationGroup": {
          "$ref": "GoogleCloudApigeeV1PayloadOperationGroup",
          "description": "Optional. Configuration used to group Apigee proxies with payload-based operations and quotas. Unlike `operation_group`, which matches on the URL path, this grouping matches on operation identifiers extracted from the request payload (for example, JSON-RPC method and tool names). This enables fine-grained authorization and quota enforcement for protocols such as MCP where multiple operations share a single endpoint. **Note:** The `proxies` and `api_resources` settings cannot be specified for both the API product and payload operation group; otherwise the call will fail."
        },
        "space": {
          "type": "string",
          "description": "Optional. The resource ID of the parent Space. If not set, the parent resource will be the Organization. To learn how Spaces can be used to manage resources, read the [Apigee Spaces Overview](https://cloud.google.com/apigee/docs/api-platform/system-administration/spaces/apigee-spaces-overview)."
        },
        "llmQuotaInterval": {
          "description": "Optional. Time interval over which the number of tokens from LLM responses is calculated.",
          "type": "string"
        },
        "quotaCounterScope": {
          "description": "Scope of the quota decides how the quota counter gets applied and evaluate for quota violation. If the Scope is set as PROXY, then all the operations defined for the APIproduct that are associated with the same proxy will share the same quota counter set at the APIproduct level, making it a global counter at a proxy level. If the Scope is set as OPERATION, then each operations get the counter set at the API product dedicated, making it a local counter. Note that, the QuotaCounterScope applies only when an operation does not have dedicated quota set for itself.",
          "enum": [
            "QUOTA_COUNTER_SCOPE_UNSPECIFIED",
            "PROXY",
            "OPERATION",
            "PRODUCT"
          ],
          "enumDescriptions": [
            "When quota is not explicitly defined for each operation(REST/GraphQL), the limits set at product level will be used as a local counter for quota evaluation by all the operations, independent of proxy association.",
            "When quota is not explicitly defined for each operation(REST/GraphQL), set at product level will be used as a global counter for quota evaluation by all the operations associated with a particular proxy.",
            "When quota is not explicitly defined for each operation(REST/GraphQL), the limits set at product level will be used as a local counter for quota evaluation by all the operations, independent of proxy association. This behavior mimics the same as QUOTA_COUNTER_SCOPE_UNSPECIFIED.",
            "When quota is not explicitly defined for each operation(REST/GraphQL), the limits set at product level will be used as a global counter for quota evaluation by all the operations."
          ],
          "type": "string"
        },
        "quotaInterval": {
          "description": "Time interval over which the number of request messages is calculated.",
          "type": "string"
        },
        "attributes": {
          "description": "Array of attributes that may be used to extend the default API product profile with customer-specific metadata. You can specify a maximum of 18 attributes. Use this property to specify the access level of the API product as either `public`, `private`, or `internal`. Only products marked `public` are available to developers in the Apigee developer portal. For example, you can set a product to `internal` while it is in development and then change access to `public` when it is ready to release on the portal. API products marked as `private` do not appear on the portal, but can be accessed by external developers.",
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          },
          "type": "array"
        },
        "description": {
          "type": "string",
          "description": "Description of the API product. Include key information about the API product that is not captured by other fields."
        },
        "environments": {
          "items": {
            "type": "string"
          },
          "description": "Comma-separated list of environment names to which the API product is bound. Requests to environments that are not listed are rejected. By specifying one or more environments, you can bind the resources listed in the API product to a specific environment, preventing developers from accessing those resources through API proxies deployed in another environment. This setting is used, for example, to prevent resources associated with API proxies in `prod` from being accessed by API proxies deployed in `test`.",
          "type": "array"
        },
        "grpcOperationGroup": {
          "$ref": "GoogleCloudApigeeV1GrpcOperationGroup",
          "description": "Optional. Configuration used to group Apigee proxies with gRPC services and method names. This grouping allows us to set quota for a particular proxy with the gRPC service name and method. If a method name is not set, this implies quota and authorization are applied to all gRPC methods implemented by that proxy for that particular gRPC service."
        },
        "llmQuotaTimeUnit": {
          "description": "Optional. Time unit defined for the `llm_quota_interval`. Valid values include `minute`, `hour`, `day`, or `month`.",
          "type": "string"
        },
        "quotaTimeUnit": {
          "description": "Time unit defined for the `quotaInterval`. Valid values include `minute`, `hour`, `day`, or `month`.",
          "type": "string"
        },
        "name": {
          "description": "Internal name of the API product. Characters you can use in the name are restricted to: `A-Z0-9._\\-$ %`. **Note:** The internal name cannot be edited when updating the API product.",
          "type": "string"
        },
        "lastModifiedAt": {
          "format": "int64",
          "type": "string",
          "description": "Response only. Modified time of this environment as milliseconds since epoch."
        },
        "approvalType": {
          "description": "Flag that specifies how API keys are approved to access the APIs defined by the API product. If set to `manual`, the consumer key is generated and returned in \"pending\" state. In this case, the API keys won't work until they have been explicitly approved. If set to `auto`, the consumer key is generated and returned in \"approved\" state and can be used immediately. **Note:** Typically, `auto` is used to provide access to free or trial API products that provide limited quota or capabilities.",
          "type": "string"
        },
        "quota": {
          "description": "Number of request messages permitted per app by this API product for the specified `quotaInterval` and `quotaTimeUnit`. For example, a `quota` of 50, for a `quotaInterval` of 12 and a `quotaTimeUnit` of hours means 50 requests are allowed every 12 hours.",
          "type": "string"
        },
        "proxies": {
          "type": "array",
          "description": "Comma-separated list of API proxy names to which this API product is bound. By specifying API proxies, you can associate resources in the API product with specific API proxies, preventing developers from accessing those resources through other API proxies. Apigee rejects requests to API proxies that are not listed. **Note:** The API proxy names must already exist in the specified environment as they will be validated upon creation.",
          "items": {
            "type": "string"
          }
        },
        "apiResources": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Comma-separated list of API resources to be bundled in the API product. By default, the resource paths are mapped from the `proxy.pathsuffix` variable. The proxy path suffix is defined as the URI fragment following the ProxyEndpoint base path. For example, if the `apiResources` element is defined to be `/forecastrss` and the base path defined for the API proxy is `/weather`, then only requests to `/weather/forecastrss` are permitted by the API product. You can select a specific path, or you can select all subpaths with the following wildcard: - `/**`: Indicates that all sub-URIs are included. - `/*` : Indicates that only URIs one level down are included. By default, / supports the same resources as /** as well as the base path defined by the API proxy. For example, if the base path of the API proxy is `/v1/weatherapikey`, then the API product supports requests to `/v1/weatherapikey` and to any sub-URIs, such as `/v1/weatherapikey/forecastrss`, `/v1/weatherapikey/region/CA`, and so on. For more information, see Managing API products."
        }
      },
      "id": "GoogleCloudApigeeV1ApiProduct",
      "type": "object"
    },
    "GoogleCloudApigeeV1Point": {
      "description": "Point is a group of information collected by runtime plane at critical points of the message flow of the processed API request. This is a list of supported point IDs, categorized to three major buckets. For each category, debug points that we are currently supporting are listed below: - Flow status debug points: StateChange FlowInfo Condition Execution DebugMask Error - Flow control debug points: FlowCallout Paused Resumed FlowReturn BreakFlow Error - Runtime debug points: ScriptExecutor FlowCalloutStepDefinition CustomTarget StepDefinition Oauth2ServicePoint RaiseFault NodeJS The detail information of the given debug point is stored in a list of results.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Name of a step in the transaction."
        },
        "results": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Result"
          },
          "description": "List of results extracted from a given debug point."
        }
      },
      "id": "GoogleCloudApigeeV1Point",
      "type": "object"
    },
    "GoogleCloudApigeeV1DisableSecurityActionRequest": {
      "properties": {},
      "description": "Message to disable an enabled SecurityAction.",
      "type": "object",
      "id": "GoogleCloudApigeeV1DisableSecurityActionRequest"
    },
    "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestIncludeAll": {
      "id": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestIncludeAll",
      "properties": {},
      "type": "object",
      "description": "Message for include_all_resources option."
    },
    "GoogleCloudApigeeV1TlsInfo": {
      "type": "object",
      "id": "GoogleCloudApigeeV1TlsInfo",
      "description": "TLS configuration information for virtual hosts and TargetServers.",
      "properties": {
        "ignoreValidationErrors": {
          "description": "If true, Edge ignores TLS certificate errors. Valid when configuring TLS for target servers and target endpoints, and when configuring virtual hosts that use 2-way TLS. When used with a target endpoint/target server, if the backend system uses SNI and returns a cert with a subject Distinguished Name (DN) that does not match the hostname, there is no way to ignore the error and the connection fails.",
          "type": "boolean"
        },
        "commonName": {
          "$ref": "GoogleCloudApigeeV1TlsInfoCommonName",
          "description": "The TLS Common Name of the certificate."
        },
        "clientAuthEnabled": {
          "type": "boolean",
          "description": "Optional. Enables two-way TLS."
        },
        "ciphers": {
          "items": {
            "type": "string"
          },
          "description": "The SSL/TLS cipher suites to be used. For programmable proxies, it must be one of the cipher suite names listed in: http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites. For configurable proxies, it must follow the configuration specified in: https://commondatastorage.googleapis.com/chromium-boringssl-docs/ssl.h.html#Cipher-suite-configuration. This setting has no effect for configurable proxies when negotiating TLS 1.3.",
          "type": "array"
        },
        "keyAlias": {
          "description": "Required if `client_auth_enabled` is true. The resource ID for the alias containing the private key and cert.",
          "type": "string"
        },
        "keyStore": {
          "type": "string",
          "description": "Required if `client_auth_enabled` is true. The resource ID of the keystore."
        },
        "trustStore": {
          "description": "The resource ID of the truststore.",
          "type": "string"
        },
        "protocols": {
          "description": "The TLS versioins to be used.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "enabled": {
          "description": "Required. Enables TLS. If false, neither one-way nor two-way TLS will be enabled.",
          "type": "boolean"
        },
        "enforce": {
          "type": "boolean",
          "description": "TLS is strictly enforced."
        }
      }
    },
    "GoogleCloudApigeeV1GrpcOperationConfig": {
      "id": "GoogleCloudApigeeV1GrpcOperationConfig",
      "properties": {
        "apiSource": {
          "description": "Required. Name of the API proxy with which the gRPC operation and quota are associated.",
          "type": "string"
        },
        "methods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of unqualified gRPC method names for the proxy to which quota will be applied. If this field is empty, the Quota will apply to all operations on the gRPC service defined on the proxy. Example: Given a proxy that is configured to serve com.petstore.PetService, the methods com.petstore.PetService.ListPets and com.petstore.PetService.GetPet would be specified here as simply [\"ListPets\", \"GetPet\"]."
        },
        "quota": {
          "$ref": "GoogleCloudApigeeV1Quota",
          "description": "Quota parameters to be enforced for the methods and API source combination. If none are specified, quota enforcement will not be done."
        },
        "attributes": {
          "description": "Custom attributes associated with the operation.",
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          },
          "type": "array"
        },
        "service": {
          "description": "Required. gRPC Service name associated to be associated with the API proxy, on which quota rules can be applied upon.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Binds the resources in a proxy or remote service with the gRPC operation and its associated quota enforcement."
    },
    "GoogleCloudApigeeV1RuntimeAddonsConfig": {
      "properties": {
        "revisionId": {
          "type": "string",
          "description": "Revision number used by the runtime to detect config changes."
        },
        "apiSecurityConfig": {
          "$ref": "GoogleCloudApigeeV1RuntimeApiSecurityConfig",
          "description": "Runtime configuration for API Security add-on."
        },
        "analyticsConfig": {
          "description": "Runtime configuration for Analytics add-on.",
          "$ref": "GoogleCloudApigeeV1RuntimeAnalyticsConfig"
        },
        "name": {
          "description": "Name of the addons config in the format: `organizations/{org}/environments/{env}/addonsConfig`",
          "type": "string"
        },
        "specGenerationConfig": {
          "description": "Runtime configuration for Spec Generation add-on.",
          "$ref": "GoogleCloudApigeeV1RuntimeSpecGenerationAddonConfig"
        },
        "uid": {
          "description": "UID is to detect if config is recreated after deletion. The add-on config will only be deleted when the environment itself gets deleted, thus it will always be the same as the UID of EnvironmentConfig.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1RuntimeAddonsConfig",
      "description": "RuntimeAddonsConfig defines the runtime configurations for add-ons in an environment."
    },
    "GoogleCloudApigeeV1SecuritySettings": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Identifier. Full resource name is always `organizations/{org}/securitySettings`."
        },
        "mlRetrainingFeedbackEnabled": {
          "description": "Optional. If true the user consents to the use of ML models for Abuse detection.",
          "type": "boolean"
        }
      },
      "id": "GoogleCloudApigeeV1SecuritySettings",
      "type": "object",
      "description": "SecuritySettings reflects the current state of the SecuritySettings feature."
    },
    "GoogleCloudApigeeV1ListSecurityFeedbackResponse": {
      "type": "object",
      "properties": {
        "securityFeedback": {
          "type": "array",
          "description": "List of SecurityFeedback reports.",
          "items": {
            "$ref": "GoogleCloudApigeeV1SecurityFeedback"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "A token that can be sent as `page_token` in `ListSecurityFeedbackRequest` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        }
      },
      "id": "GoogleCloudApigeeV1ListSecurityFeedbackResponse",
      "description": "Response for ListSecurityFeedback"
    },
    "GoogleIamV1AuditConfig": {
      "type": "object",
      "properties": {
        "service": {
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
          "type": "string"
        },
        "auditLogConfigs": {
          "description": "The configuration for logging of each type of permission.",
          "items": {
            "$ref": "GoogleIamV1AuditLogConfig"
          },
          "type": "array"
        }
      },
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "id": "GoogleIamV1AuditConfig"
    },
    "GoogleCloudApigeeV1Developer": {
      "properties": {
        "createdAt": {
          "format": "int64",
          "type": "string",
          "readOnly": true,
          "description": "Output only. Time at which the developer was created in milliseconds since epoch."
        },
        "email": {
          "type": "string",
          "description": "Required. Email address of the developer. This value is used to uniquely identify the developer in Apigee hybrid. Note that the email address has to be in lowercase only."
        },
        "companies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of companies associated with the developer."
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Output only. Time at which the developer was last modified in milliseconds since epoch.",
          "readOnly": true,
          "format": "int64"
        },
        "userName": {
          "type": "string",
          "description": "Required. User name of the developer. Not used by Apigee hybrid."
        },
        "firstName": {
          "type": "string",
          "description": "Required. First name of the developer."
        },
        "status": {
          "description": "Output only. Status of the developer. Valid values are `active` and `inactive`.",
          "type": "string",
          "readOnly": true
        },
        "apps": {
          "items": {
            "type": "string"
          },
          "description": "List of apps associated with the developer.",
          "type": "array"
        },
        "lastName": {
          "description": "Required. Last name of the developer.",
          "type": "string"
        },
        "accessType": {
          "description": "Access type.",
          "type": "string"
        },
        "developerId": {
          "description": "ID of the developer. **Note**: IDs are generated internally by Apigee and are not guaranteed to stay the same over time.",
          "type": "string"
        },
        "organizationName": {
          "description": "Output only. Name of the Apigee organization in which the developer resides.",
          "readOnly": true,
          "type": "string"
        },
        "appFamily": {
          "description": "Developer app family.",
          "type": "string"
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          },
          "description": "Optional. Developer attributes (name/value pairs). The custom attribute limit is 18."
        }
      },
      "id": "GoogleCloudApigeeV1Developer",
      "type": "object"
    },
    "GoogleCloudApigeeV1InstanceDeploymentStatus": {
      "id": "GoogleCloudApigeeV1InstanceDeploymentStatus",
      "properties": {
        "deployedRoutes": {
          "description": "Current routes deployed in the ingress routing table. A route which is missing will appear in `missing_routes`.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1InstanceDeploymentStatusDeployedRoute"
          }
        },
        "deployedRevisions": {
          "description": "Revisions currently deployed in MPs.",
          "items": {
            "$ref": "GoogleCloudApigeeV1InstanceDeploymentStatusDeployedRevision"
          },
          "type": "array"
        },
        "instance": {
          "type": "string",
          "description": "ID of the instance reporting the status."
        }
      },
      "description": "The status of a deployment as reported by a single instance.",
      "type": "object"
    },
    "GoogleRpcStatus": {
      "properties": {
        "code": {
          "format": "int32",
          "description": "The status code, which should be an enum value of google.rpc.Code.",
          "type": "integer"
        },
        "details": {
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "any",
              "description": "Properties of the object. Contains field @type with type URL."
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
          "type": "array"
        },
        "message": {
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
          "type": "string"
        }
      },
      "id": "GoogleRpcStatus",
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "type": "object"
    },
    "GoogleCloudApigeeV1GraphqlDocumentation": {
      "properties": {
        "schema": {
          "description": "Required. The documentation file contents for the GraphQL schema.",
          "$ref": "GoogleCloudApigeeV1DocumentationFile"
        },
        "endpointUri": {
          "type": "string",
          "description": "Required. The GraphQL endpoint URI to be queried by API consumers. Max length is 2,083 characters."
        }
      },
      "description": "GraphQL documentation for a catalog item.",
      "type": "object",
      "id": "GoogleCloudApigeeV1GraphqlDocumentation"
    },
    "GoogleCloudApigeeV1AppGroup": {
      "properties": {
        "appGroupId": {
          "readOnly": true,
          "description": "Output only. Internal identifier that cannot be edited",
          "type": "string"
        },
        "channelUri": {
          "description": "A reference to the associated storefront/marketplace.",
          "type": "string"
        },
        "organization": {
          "description": "Immutable. the org the app group is created",
          "type": "string"
        },
        "createdAt": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Created time as milliseconds since epoch.",
          "format": "int64"
        },
        "status": {
          "description": "Valid values are `active` or `inactive`. Note that the status of the AppGroup should be updated via UpdateAppGroupRequest by setting the action as `active` or `inactive`.",
          "type": "string"
        },
        "lastModifiedAt": {
          "type": "string",
          "format": "int64",
          "description": "Output only. Modified time as milliseconds since epoch.",
          "readOnly": true
        },
        "displayName": {
          "type": "string",
          "description": "app group name displayed in the UI"
        },
        "email": {
          "description": "Optional. Email of the AppGroup.",
          "type": "string"
        },
        "channelId": {
          "type": "string",
          "description": "channel identifier identifies the owner maintaing this grouping."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the AppGroup. Characters you can use in the name are restricted to: A-Z0-9._\\-$ %."
        },
        "attributes": {
          "description": "A list of attributes",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          }
        }
      },
      "description": "AppGroup contains the request/response fields representing the logical grouping of apps. Note that appgroup_id, create_time and update_time cannot be changed by the user, and gets updated by the system. The name and the organization once provided cannot be edited subsequently.",
      "id": "GoogleCloudApigeeV1AppGroup",
      "type": "object"
    },
    "GoogleCloudApigeeV1ListDeveloperAppsResponse": {
      "properties": {
        "app": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1DeveloperApp"
          },
          "description": "List of developer apps and their credentials."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1ListDeveloperAppsResponse"
    },
    "GoogleCloudApigeeV1CertInfo": {
      "type": "object",
      "id": "GoogleCloudApigeeV1CertInfo",
      "description": "X.509 certificate as defined in RFC 5280.",
      "properties": {
        "serialNumber": {
          "description": "X.509 serial number.",
          "type": "string"
        },
        "subject": {
          "description": "X.509 subject.",
          "type": "string"
        },
        "isValid": {
          "description": "Flag that specifies whether the certificate is valid. Flag is set to `Yes` if the certificate is valid, `No` if expired, or `Not yet` if not yet valid.",
          "type": "string"
        },
        "sigAlgName": {
          "type": "string",
          "description": "X.509 signatureAlgorithm."
        },
        "subjectAlternativeNames": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "X.509 subject alternative names (SANs) extension."
        },
        "validFrom": {
          "description": "X.509 `notBefore` validity period in milliseconds since epoch.",
          "format": "int64",
          "type": "string"
        },
        "issuer": {
          "description": "X.509 issuer.",
          "type": "string"
        },
        "basicConstraints": {
          "type": "string",
          "description": "X.509 basic constraints extension."
        },
        "expiryDate": {
          "description": "X.509 `notAfter` validity period in milliseconds since epoch.",
          "type": "string",
          "format": "int64"
        },
        "version": {
          "type": "integer",
          "format": "int32",
          "description": "X.509 version."
        },
        "publicKey": {
          "description": "Public key component of the X.509 subject public key info.",
          "type": "string"
        }
      }
    },
    "GoogleCloudApigeeV1KeyValueEntry": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Resource URI that can be used to identify the scope of the key value map entries."
        },
        "value": {
          "type": "string",
          "description": "Required. Data or payload that is being retrieved and associated with the unique key."
        }
      },
      "description": "Key value map pair where the value represents the data associated with the corresponding key. **Note**: Supported for Apigee hybrid 1.8.x and higher.",
      "type": "object",
      "id": "GoogleCloudApigeeV1KeyValueEntry"
    },
    "GoogleLongrunningListOperationsResponse": {
      "id": "GoogleLongrunningListOperationsResponse",
      "description": "The response message for Operations.ListOperations.",
      "properties": {
        "unreachable": {
          "description": "Unordered list. Unreachable resources. Populated when the request sets `ListOperationsRequest.return_partial_success` and reads across collections. For example, when attempting to list all resources across all supported locations.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "operations": {
          "description": "A list of operations that matches the specified filter in the request.",
          "items": {
            "$ref": "GoogleLongrunningOperation"
          },
          "type": "array"
        },
        "nextPageToken": {
          "type": "string",
          "description": "The standard List next-page token."
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1ListApiDocsResponse": {
      "id": "GoogleCloudApigeeV1ListApiDocsResponse",
      "properties": {
        "message": {
          "type": "string",
          "description": "Description of the operation."
        },
        "errorCode": {
          "description": "Unique error code for the request, if any.",
          "type": "string"
        },
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "status": {
          "type": "string",
          "description": "Status of the operation."
        },
        "requestId": {
          "description": "Unique ID of the request.",
          "type": "string"
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1ApiDoc"
          },
          "description": "The catalog item resources."
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1NodeConfig": {
      "description": "NodeConfig for setting the min/max number of nodes associated with the environment.",
      "type": "object",
      "properties": {
        "minNodeCount": {
          "type": "string",
          "format": "int64",
          "description": "Optional. The minimum total number of gateway nodes that the is reserved for all instances that has the specified environment. If not specified, the default is determined by the recommended minimum number of nodes for that gateway."
        },
        "maxNodeCount": {
          "description": "Optional. The maximum total number of gateway nodes that the is reserved for all instances that has the specified environment. If not specified, the default is determined by the recommended maximum number of nodes for that gateway.",
          "type": "string",
          "format": "int64"
        },
        "currentAggregateNodeCount": {
          "description": "Output only. The current total number of gateway nodes that each environment currently has across all instances.",
          "format": "int64",
          "type": "string",
          "readOnly": true
        }
      },
      "id": "GoogleCloudApigeeV1NodeConfig"
    },
    "GoogleCloudApigeeV1DateRange": {
      "type": "object",
      "id": "GoogleCloudApigeeV1DateRange",
      "description": "Date range of the data to export.",
      "properties": {
        "start": {
          "description": "Required. Start date of the data to export in the format `yyyy-mm-dd`. The date range begins at 00:00:00 UTC on the start date.",
          "type": "string"
        },
        "end": {
          "type": "string",
          "description": "Required. End date (exclusive) of the data to export in the format `yyyy-mm-dd`. The date range ends at 00:00:00 UTC on the end date- which will not be in the output."
        }
      }
    },
    "GoogleCloudApigeeV1GraphQLOperation": {
      "type": "object",
      "id": "GoogleCloudApigeeV1GraphQLOperation",
      "properties": {
        "operationTypes": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Required. GraphQL operation types. Valid values include `query` or `mutation`. **Note**: Apigee does not currently support `subscription` types."
        },
        "operation": {
          "description": "GraphQL operation name. The name and operation type will be used to apply quotas. If no name is specified, the quota will be applied to all GraphQL operations irrespective of their operation names in the payload.",
          "type": "string"
        }
      },
      "description": "Represents the pairing of GraphQL operation types and the GraphQL operation name."
    },
    "GoogleCloudApigeeV1AnalyticsConfig": {
      "properties": {
        "state": {
          "readOnly": true,
          "enum": [
            "ADDON_STATE_UNSPECIFIED",
            "ENABLING",
            "ENABLED",
            "DISABLING",
            "DISABLED"
          ],
          "enumDescriptions": [
            "Default value.",
            "Add-on is in progress of enabling.",
            "Add-on is fully enabled and ready to use.",
            "Add-on is in progress of disabling.",
            "Add-on is fully disabled."
          ],
          "description": "Output only. The state of the Analytics add-on.",
          "type": "string"
        },
        "expireTimeMillis": {
          "type": "string",
          "description": "Output only. Time at which the Analytics add-on expires in milliseconds since epoch. If unspecified, the add-on will never expire.",
          "format": "int64",
          "readOnly": true
        },
        "enabled": {
          "description": "Whether the Analytics add-on is enabled.",
          "type": "boolean"
        },
        "updateTime": {
          "readOnly": true,
          "format": "google-datetime",
          "description": "Output only. The latest update time.",
          "type": "string"
        }
      },
      "description": "Configuration for the Analytics add-on.",
      "type": "object",
      "id": "GoogleCloudApigeeV1AnalyticsConfig"
    },
    "GoogleRpcPreconditionFailureViolation": {
      "properties": {
        "description": {
          "type": "string",
          "description": "A description of how the precondition failed. Developers can use this description to understand how to fix the failure. For example: \"Terms of service not accepted\"."
        },
        "type": {
          "description": "The type of PreconditionFailure. We recommend using a service-specific enum type to define the supported precondition violation subjects. For example, \"TOS\" for \"Terms of Service violation\".",
          "type": "string"
        },
        "subject": {
          "type": "string",
          "description": "The subject, relative to the type, that failed. For example, \"google.com/cloud\" relative to the \"TOS\" type would indicate which terms of service is being referenced."
        }
      },
      "id": "GoogleRpcPreconditionFailureViolation",
      "description": "A message type used to describe a single precondition failure.",
      "type": "object"
    },
    "GoogleCloudApigeeV1ApiCategoryResponse": {
      "description": "The API category resource wrapped with response status, error_code, etc.",
      "id": "GoogleCloudApigeeV1ApiCategoryResponse",
      "properties": {
        "requestId": {
          "type": "string",
          "description": "Unique ID of the request."
        },
        "message": {
          "description": "Description of the operation.",
          "type": "string"
        },
        "data": {
          "description": "The API category resource.",
          "$ref": "GoogleCloudApigeeV1ApiCategory"
        },
        "status": {
          "type": "string",
          "description": "Status of the operation."
        },
        "errorCode": {
          "description": "Unique error code for the request, if any.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1IntegrationConfig": {
      "properties": {
        "enabled": {
          "description": "Flag that specifies whether the Integration add-on is enabled.",
          "type": "boolean"
        }
      },
      "description": "Configuration for the Integration add-on.",
      "type": "object",
      "id": "GoogleCloudApigeeV1IntegrationConfig"
    },
    "GoogleCloudApigeeV1SetAddonsRequest": {
      "type": "object",
      "description": "Request for SetAddons.",
      "properties": {
        "addonsConfig": {
          "$ref": "GoogleCloudApigeeV1AddonsConfig",
          "description": "Required. Add-on configurations."
        }
      },
      "id": "GoogleCloudApigeeV1SetAddonsRequest"
    },
    "GoogleCloudApigeeV1NatAddress": {
      "description": "Apigee NAT(network address translation) address. A NAT address is a static external IP address used for Internet egress traffic.",
      "properties": {
        "name": {
          "description": "Required. Resource ID of the NAT address.",
          "type": "string"
        },
        "state": {
          "enumDescriptions": [
            "The resource is in an unspecified state.",
            "The NAT address is being created.",
            "The NAT address is reserved but not yet used for Internet egress.",
            "The NAT address is active and used for Internet egress.",
            "The NAT address is being deleted."
          ],
          "type": "string",
          "readOnly": true,
          "enum": [
            "STATE_UNSPECIFIED",
            "CREATING",
            "RESERVED",
            "ACTIVE",
            "DELETING"
          ],
          "description": "Output only. State of the nat address."
        },
        "ipAddress": {
          "description": "Output only. The static IPV4 address.",
          "type": "string",
          "readOnly": true
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1NatAddress"
    },
    "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestResourceArrayResource": {
      "type": "object",
      "description": "Resource for which we are computing security assessment.",
      "properties": {
        "type": {
          "description": "Required. Type of this resource.",
          "enum": [
            "RESOURCE_TYPE_UNSPECIFIED",
            "API_PROXY",
            "API_HUB_DEPLOYMENT"
          ],
          "enumDescriptions": [
            "ResourceType not specified.",
            "Resource is an Apigee Proxy.",
            "Resource is an API Hub deployment."
          ],
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "Required. Name of this resource. For an Apigee API Proxy, this should be the id of the API proxy. For an API Hub Deployment, this should be the id of the deployment."
        }
      },
      "id": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestResourceArrayResource"
    },
    "GoogleCloudApigeeV1ScheduledMaintenance": {
      "properties": {
        "startTime": {
          "type": "string",
          "format": "google-datetime",
          "readOnly": true,
          "description": "Output only. The start time (UTC) of the scheduled maintenance."
        }
      },
      "description": "Scheduled maintenance information for an instance.",
      "type": "object",
      "id": "GoogleCloudApigeeV1ScheduledMaintenance"
    },
    "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestResourceArray": {
      "description": "Message for the array of resources. For Apigee, the proxies are resources.",
      "type": "object",
      "properties": {
        "resources": {
          "description": "Required. The array of resources. For Apigee, the proxies are resources.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestResourceArrayResource"
          }
        }
      },
      "id": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestResourceArray"
    },
    "GoogleCloudApigeeV1TraceConfigOtelMtlsConfig": {
      "properties": {
        "trustStore": {
          "description": "Required. Truststore holding the CA(s) that signed the OTel Collector's server certificate. Accepts either a plain keystore ID (e.g. `my-truststore`) resolving to `organizations/{org}/environments/{env}/keystores/{trust_store}`, or a reference URI of the form `ref://{referenceID}` that points to a Reference whose `resource_type` is `KeyStore` (used as a truststore).",
          "type": "string"
        },
        "keyStore": {
          "description": "Required. Keystore holding the client-side key/cert alias. Accepts either a plain keystore ID (e.g. `my-keystore`) resolving to `organizations/{org}/environments/{env}/keystores/{key_store}`, or a reference URI of the form `ref://{referenceID}` that points to a Reference whose `resource_type` is `KeyStore`.",
          "type": "string"
        },
        "keyAlias": {
          "description": "Required. Plain alias ID within `key_store` that contains the client key/cert used for mTLS.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1TraceConfigOtelMtlsConfig",
      "type": "object",
      "description": "OtelMtlsConfig configures mutual TLS for the outbound OTel Collector connection by referencing already-uploaded Keystore/Truststore aliases. Key/cert material is uploaded via the existing Keystore Alias APIs (POST .../keystores/{ks}/aliases), the same APIs used to configure mTLS for `TargetServer.tls_info`. Only the resource IDs of those aliases live in this message; no secret material is inlined into TraceConfig. Field shape mirrors `TlsInfo` used by `TargetServer.tls_info`: - `key_store` and `trust_store` accept either a plain keystore ID or a `ref://{referenceID}` URI (an environment-scoped Reference whose `resource_type` is `KeyStore`/`TrustStore`). References enable rotation without editing the TraceConfig itself. - `key_alias` is the plain alias ID within `key_store`. Fields that would normally appear on `TlsInfo` (enabled, client_auth_enabled, protocols, enforce, ignore_validation_errors) are intentionally omitted from this customer surface. The runtime enforces secure defaults: - Mutual TLS is always required (both server AND client cert exchanged). - Server certificate validation is always strict (no ignoring errors). - TLS 1.2 and TLS 1.3 are enabled; older versions are rejected."
    },
    "GoogleCloudApigeeV1DeveloperApp": {
      "properties": {
        "apiProducts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of API products associated with the developer app."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Scopes to apply to the developer app. The specified scopes must already exist for the API product that you associate with the developer app."
        },
        "status": {
          "type": "string",
          "description": "Status of the credential. Valid values include `approved` or `revoked`."
        },
        "developerId": {
          "type": "string",
          "description": "ID of the developer."
        },
        "appId": {
          "type": "string",
          "description": "ID of the developer app. This ID is not user specified but is automatically generated on app creation. appId is a UUID."
        },
        "appFamily": {
          "type": "string",
          "description": "Developer app family."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          },
          "description": "List of attributes for the developer app."
        },
        "callbackUrl": {
          "description": "Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to developer apps.",
          "type": "string"
        },
        "keyExpiresIn": {
          "type": "string",
          "format": "int64",
          "description": "Expiration time, in milliseconds, for the consumer key that is generated for the developer app. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set."
        },
        "createdAt": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Time the developer app was created in milliseconds since epoch.",
          "format": "int64"
        },
        "name": {
          "type": "string",
          "description": "Name of the developer app."
        },
        "credentials": {
          "type": "array",
          "description": "Output only. Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.",
          "items": {
            "$ref": "GoogleCloudApigeeV1Credential"
          },
          "readOnly": true
        },
        "lastModifiedAt": {
          "type": "string",
          "readOnly": true,
          "format": "int64",
          "description": "Output only. Time the developer app was modified in milliseconds since epoch."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1DeveloperApp"
    },
    "GoogleIamV1Binding": {
      "type": "object",
      "description": "Associates `members`, or principals, with a `role`.",
      "id": "GoogleIamV1Binding",
      "properties": {
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles)."
        },
        "members": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`."
        },
        "condition": {
          "$ref": "GoogleTypeExpr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      }
    },
    "GoogleCloudApigeeV1ListAppsResponse": {
      "properties": {
        "totalSize": {
          "description": "Total count of Apps.",
          "format": "int32",
          "type": "integer"
        },
        "app": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1App"
          }
        },
        "nextPageToken": {
          "description": "Token that can be sent as `next_page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1ListAppsResponse",
      "type": "object"
    },
    "GoogleCloudApigeeV1ListEndpointAttachmentsResponse": {
      "type": "object",
      "id": "GoogleCloudApigeeV1ListEndpointAttachmentsResponse",
      "properties": {
        "endpointAttachments": {
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1EndpointAttachment"
          },
          "description": "Endpoint attachments in the specified organization."
        },
        "nextPageToken": {
          "type": "string",
          "description": "Page token that you can include in an `ListEndpointAttachments` request to retrieve the next page. If omitted, no subsequent pages exist."
        }
      },
      "description": "Response for ListEndpointAttachments method."
    },
    "GoogleCloudApigeeV1EnvironmentConfigClientIPResolutionConfigHeaderIndexAlgorithm": {
      "id": "GoogleCloudApigeeV1EnvironmentConfigClientIPResolutionConfigHeaderIndexAlgorithm",
      "properties": {
        "ipHeaderIndex": {
          "format": "int32",
          "description": "The index of the ip in the header. (By default, value is 0 if missing)",
          "type": "integer"
        },
        "ipHeaderName": {
          "description": "The name of the header to extract the client ip from.",
          "type": "string"
        }
      },
      "description": "Resolves the client ip based on a custom header.",
      "type": "object"
    },
    "GoogleCloudApigeeV1SecurityAssessmentResultResourceApiHubDeploymentDetails": {
      "description": "Additional details if the resource is an API Hub deployment.",
      "type": "object",
      "properties": {
        "gateway": {
          "description": "The gateway for the API Hub deployment. Format: `projects/{project}/locations/{location}/plugins/{plugin}/instances/{instance}`",
          "type": "string"
        },
        "gatewayType": {
          "type": "string",
          "description": "The gateway type for the API Hub deployment.",
          "enum": [
            "API_HUB_GATEWAY_TYPE_UNSPECIFIED",
            "APIGEE_X",
            "APIGEE_HYBRID",
            "APIGEE_EDGE",
            "APIGEE_OPDK"
          ],
          "enumDescriptions": [
            "Gateway type is not specified.",
            "Gateway is Apigee X for API Hub.",
            "Gateway is Apigee Hybrid for API Hub.",
            "Gateway is Apigee Edge for API Hub.",
            "Gateway is Apigee OPDK for API Hub."
          ]
        },
        "resourceUri": {
          "type": "string",
          "description": "The resource uri for the API Hub deployment."
        },
        "sourceProject": {
          "type": "string",
          "description": "The source project for the API Hub deployment."
        },
        "displayName": {
          "description": "The display name of the API Hub deployment.",
          "type": "string"
        }
      },
      "id": "GoogleCloudApigeeV1SecurityAssessmentResultResourceApiHubDeploymentDetails"
    },
    "GoogleCloudApigeeV1ProfileConfigMediation": {
      "description": "By default, following policies will be included: - OASValidation - SOAPMessageValidation",
      "type": "object",
      "properties": {},
      "id": "GoogleCloudApigeeV1ProfileConfigMediation"
    },
    "GoogleCloudApigeeV1MaintenanceUpdatePolicy": {
      "properties": {
        "maintenanceWindows": {
          "description": "Optional. Preferred windows to perform maintenance. Currently limited to 1.",
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1MaintenanceUpdatePolicyMaintenanceWindow"
          }
        },
        "maintenanceChannel": {
          "enumDescriptions": [
            "Unspecified maintenance channel.",
            "Receive 1 weeks notice before maintenance occurs",
            "Receive 2 weeks notice before maintenance occurs"
          ],
          "type": "string",
          "enum": [
            "MAINTENANCE_CHANNEL_UNSPECIFIED",
            "WEEK1",
            "WEEK2"
          ],
          "description": "Optional. Maintenance channel to specify relative scheduling for maintenance."
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1MaintenanceUpdatePolicy",
      "description": "MaintenanceUpdatePolicy specifies the preferred window to perform maintenance on the instance (day of the week and time of day)."
    },
    "GoogleCloudApigeeV1App": {
      "properties": {
        "companyName": {
          "description": "Name of the company that owns the app.",
          "type": "string"
        },
        "callbackUrl": {
          "description": "Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to apps.",
          "type": "string"
        },
        "keyExpiresIn": {
          "type": "string",
          "description": "Duration, in milliseconds, of the consumer key that will be generated for the app. The default value, -1, indicates an infinite validity period. Once set, the expiration can't be updated. json key: keyExpiresIn",
          "format": "int64"
        },
        "name": {
          "type": "string",
          "description": "Name of the app."
        },
        "credentials": {
          "description": "Output only. Set of credentials for the app. Credentials are API key/secret pairs associated with API products.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "GoogleCloudApigeeV1Credential"
          }
        },
        "developerEmail": {
          "description": "Email of the developer.",
          "type": "string"
        },
        "attributes": {
          "items": {
            "$ref": "GoogleCloudApigeeV1Attribute"
          },
          "type": "array",
          "description": "List of attributes."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Scopes to apply to the app. The specified scope names must already exist on the API product that you associate with the app."
        },
        "status": {
          "type": "string",
          "description": "Status of the credential."
        },
        "developerId": {
          "type": "string",
          "description": "ID of the developer."
        },
        "appId": {
          "description": "ID of the app.",
          "type": "string"
        },
        "apiProducts": {
          "description": "List of API products associated with the app.",
          "items": {
            "$ref": "GoogleCloudApigeeV1ApiProductRef"
          },
          "type": "array"
        },
        "appGroup": {
          "description": "Name of the AppGroup",
          "type": "string"
        },
        "createdAt": {
          "format": "int64",
          "readOnly": true,
          "description": "Output only. Unix time when the app was created.",
          "type": "string"
        },
        "lastModifiedAt": {
          "format": "int64",
          "type": "string",
          "description": "Output only. Last modified time as milliseconds since epoch.",
          "readOnly": true
        }
      },
      "id": "GoogleCloudApigeeV1App",
      "type": "object"
    },
    "GoogleCloudApigeeV1MoveSharedFlowRequest": {
      "description": "Moves a Shared Flow to a different space.",
      "id": "GoogleCloudApigeeV1MoveSharedFlowRequest",
      "properties": {
        "space": {
          "description": "Optional. Resource ID of the space to move the shared flow to. If unspecified, the shared flow will be moved to the organization level.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GoogleCloudApigeeV1TraceConfig": {
      "description": "TraceConfig defines the configurations in an environment of distributed trace.",
      "properties": {
        "samplingConfig": {
          "description": "Distributed trace configuration for all API proxies in an environment. You can also override the configuration for a specific API proxy using the distributed trace configuration overrides API.",
          "$ref": "GoogleCloudApigeeV1TraceSamplingConfig"
        },
        "traceProtocol": {
          "enum": [
            "TRACE_PROTOCOL_UNSPECIFIED",
            "OPEN_CENSUS",
            "OTLP"
          ],
          "type": "string",
          "enumDescriptions": [
            "Protocol unspecified. Defaults to OPEN_CENSUS.",
            "Uses OpenCensus protocol.",
            "Uses OpenTelemetry Protocol (OTLP)."
          ],
          "description": "Optional. The trace protocol to use. Configuration Requirements (if trace_protocol is OTLP): - Allowed Exporters: CLOUD_TRACE or OPEN_TELEMETRY_COLLECTOR. - If Exporter is OPEN_TELEMETRY_COLLECTOR: - endpoint refers to a valid OTLP collector URL. - If Exporter is CLOUD_TRACE: - endpoint refers to a valid project ID."
        },
        "exporter": {
          "type": "string",
          "enum": [
            "EXPORTER_UNSPECIFIED",
            "JAEGER",
            "CLOUD_TRACE",
            "OPEN_TELEMETRY_COLLECTOR",
            "OPEN_TELEMETRY_CLOUD_TRACE"
          ],
          "description": "Required. Exporter that is used to view the distributed trace captured using the chosen trace protocol. An exporter sends traces to any backend that is capable of consuming them. Recorded spans can be exported by registered exporters.",
          "enumDescriptions": [
            "Exporter unspecified",
            "Exports events to Jaeger. Compatible with OpenCensus protocol.",
            "Exports events to Cloud Trace. Compatible with OpenCensus protocol.",
            "OpenTelemetry Collector. Compatible with OpenTelemetry protocol.",
            "Exports events to Cloud Trace. Compatible with OpenTelemetry protocol."
          ]
        },
        "spanSemantics": {
          "type": "string",
          "description": "Optional. The span semantics to use. Configuration Requirements (if span_semantics is OTEL): - trace_protocol must be OTLP.",
          "enum": [
            "SPAN_SEMANTICS_UNSPECIFIED",
            "LEGACY",
            "OTEL"
          ],
          "enumDescriptions": [
            "Semantics unspecified. Defaults to LEGACY.",
            "Uses Apigee legacy span and attribute names.",
            "Uses OpenTelemetry semantic-convention-aligned span and attribute names."
          ]
        },
        "mtlsConfig": {
          "description": "Optional. mTLS configuration for the OTel Collector endpoint. Required when `otel_collector_security_scheme` == MTLS; must not be set otherwise.",
          "$ref": "GoogleCloudApigeeV1TraceConfigOtelMtlsConfig"
        },
        "endpoint": {
          "description": "Required. Endpoint of the exporter.",
          "type": "string"
        },
        "otelCollectorSecurityScheme": {
          "enum": [
            "OTEL_COLLECTOR_SECURITY_SCHEME_UNSPECIFIED",
            "NONE",
            "MTLS"
          ],
          "enumDescriptions": [
            "Unspecified. Behavior is identical to NONE.",
            "Default. Unauthenticated OTLP/HTTP export. Preserves today's behavior byte-for-byte for existing configurations.",
            "Mutual TLS via customer PKI. Cert material is stored in Apigee Keystores/Truststores and referenced by resource ID in `mtls_config` (same mechanism as TargetServer.tls_info)."
          ],
          "description": "Optional. The security scheme for the OTel Collector endpoint. Defaults to NONE (unauthenticated OTLP/HTTP), preserving today's behavior for existing configurations. Only applicable when `exporter` == OPEN_TELEMETRY_COLLECTOR.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1TraceConfig"
    },
    "GoogleCloudApigeeV1SecurityMonitoringCondition": {
      "type": "object",
      "id": "GoogleCloudApigeeV1SecurityMonitoringCondition",
      "description": "Security monitoring condition for risk assessment version 2.",
      "properties": {
        "totalMonitoredResources": {
          "format": "int32",
          "type": "integer",
          "readOnly": true,
          "description": "Output only. Total number of monitored resources within this condition."
        },
        "scope": {
          "type": "string",
          "description": "Optional. Scope of the security monitoring condition. When RiskAssessmentType is APIGEE, the scope should be set to the environment of the resources. When RiskAssessmentType is API_HUB, the scope should not be set."
        },
        "updateTime": {
          "type": "string",
          "readOnly": true,
          "format": "google-datetime",
          "description": "Output only. The time of the security monitoring condition update."
        },
        "riskAssessmentType": {
          "enum": [
            "RISK_ASSESSMENT_TYPE_UNSPECIFIED",
            "APIGEE",
            "API_HUB"
          ],
          "enumDescriptions": [
            "Risk assessment type is not specified.",
            "Risk assessment type is Apigee.",
            "Risk assessment type is API Hub."
          ],
          "type": "string",
          "description": "Optional. The risk assessment type of the security monitoring condition. Defaults to ADVANCED_API_SECURITY."
        },
        "profile": {
          "type": "string",
          "description": "Required. ID of security profile of the security monitoring condition."
        },
        "name": {
          "type": "string",
          "description": "Identifier. Name of the security monitoring condition resource. Format: organizations/{org}/securityMonitoringConditions/{security_monitoring_condition}"
        },
        "include": {
          "description": "Include only these resources.",
          "$ref": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestResourceArray"
        },
        "totalDeployedResources": {
          "type": "integer",
          "readOnly": true,
          "format": "int32",
          "description": "Output only. Total number of deployed resources within scope."
        },
        "apiHubGateway": {
          "type": "string",
          "description": "Optional. The API Hub gateway monitored by the security monitoring condition. This should only be set if risk_assessment_type is API_HUB. Format: `projects/{project}/locations/{location}/plugins/{plugin}/instances/{instance}`"
        },
        "createTime": {
          "description": "Output only. The time of the security monitoring condition creation.",
          "format": "google-datetime",
          "type": "string",
          "readOnly": true
        },
        "includeAllResources": {
          "description": "Include all resources under the scope.",
          "$ref": "GoogleCloudApigeeV1BatchComputeSecurityAssessmentResultsRequestIncludeAll"
        }
      }
    },
    "GoogleCloudApigeeV1CustomReportMetric": {
      "properties": {
        "name": {
          "type": "string",
          "description": "name of the metric"
        },
        "function": {
          "type": "string",
          "description": "aggregate function"
        }
      },
      "type": "object",
      "id": "GoogleCloudApigeeV1CustomReportMetric",
      "description": "This encapsulates a metric property of the form sum(message_count) where name is message_count and function is sum"
    }
  },
  "name": "apigee",
  "mtlsRootUrl": "https://apigee.mtls.googleapis.com/",
  "discoveryVersion": "v1",
  "canonicalName": "Apigee",
  "kind": "discovery#restDescription",
  "ownerName": "Google",
  "baseUrl": "https://apigee.googleapis.com/",
  "protocol": "rest",
  "fullyEncodeReservedExpansion": true,
  "description": "Use the Apigee API to programmatically develop and manage APIs with a set of RESTful operations. Develop and secure API proxies, deploy and undeploy API proxy revisions, monitor APIs, configure environments, manage users, and more. Note: This product is available as a free trial for a time period of 60 days.",
  "version": "v1",
  "documentationLink": "https://cloud.google.com/apigee-api-management/"
}
