{
  "canonicalName": "App Optimize",
  "discoveryVersion": "v1",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "schemas": {
    "Report": {
      "type": "object",
      "id": "Report",
      "description": "A configuration that defines the parameters for the data represented by a report.",
      "properties": {
        "metrics": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Required. A list of metrics to include in the report. Supported values: * `cost` * `resource_cost` * `network_cost` * `network_cost_standard_internet` * `network_cost_premium_internet` * `network_cost_inter_region` * `network_cost_inter_zone` * `network_cost_load_balancing_inbound` * `network_cost_load_balancing_outbound` * `network_cost_interconnect_inbound` * `network_cost_interconnect_outbound` * `cpu_mean_utilization` * `cpu_usage_core_seconds` * `cpu_allocation_core_seconds` * `cpu_p95_utilization` * `memory_mean_utilization` * `memory_usage_byte_seconds` * `memory_allocation_byte_seconds` * `memory_p95_utilization`"
        },
        "filter": {
          "type": "string",
          "description": "Optional. A Common Expression Language (CEL) expression used to filter the data for the report. Predicates may refer to any dimension. Filtering must conform to these constraints: * All string field predicates must use exact string matches. * Multiple predicates referring to the same string field must be joined using the logical OR operator ('||'). * All other predicates must be joined using the logical AND operator (`&&`). * A predicate on a time dimension (e.g., `day`) specifying the start time must use a greater-than-or-equal-to comparison (`\u003e=`). * A predicate on a time dimension specifying the end time must use a less-than comparison (`\u003c`). Examples: 1. Filter by a specific resource type: `\"resource_type == 'compute.googleapis.com/Instance'\"` 2. Filter data points that fall within a specific absolute time interval: `\"hour \u003e= timestamp('2024-01-01T00:00:00Z') && hour \u003c timestamp('2024-02-01T00:00:00Z')\"` 3. Filter data points that fall within the past 72 hours: `\"hour \u003e= now - duration('72h')\"` 4. Combine string predicate with time interval predicate: `\"(location == 'us-east1' || location == 'us-west1') && hour \u003e= timestamp('2023-12-01T00:00:00Z') && hour \u003c timestamp('2024-02-01T00:00:00Z')\"` If the filter omits time dimensions (`month`, `day`, `hour`), the report defaults to a 7-day range ending at the previous Pacific Time midnight, with Daylight Saving Time (DST) applied. For example, if the current Pacific Time is `2026-01-05T12:00:00`, the default range is `2025-12-29T00:00:00` to `2026-01-05T00:00:00` Pacific time."
        },
        "expireTime": {
          "readOnly": true,
          "description": "Output only. Timestamp in UTC of when this report expires. Once the report expires, it will no longer be accessible and the report's underlying data will be deleted.",
          "type": "string",
          "format": "google-datetime"
        },
        "scopes": {
          "description": "Optional. The resource containers for which to fetch data. Default is the project specified in the report's parent. No more than one scope is supported.",
          "items": {
            "$ref": "Scope"
          },
          "type": "array"
        },
        "name": {
          "description": "Identifier. The name of this report.",
          "type": "string"
        },
        "dimensions": {
          "items": {
            "type": "string"
          },
          "description": "Required. A list of dimensions to include in the report. Supported values: * `project` * `application` * `service_or_workload` * `resource` * `resource_type` * `location` * `product_display_name` * `sku` * `month` * `day` * `hour` To aggregate results by time, specify at least one time dimension (`month`, `day`, or `hour`). All time dimensions use Pacific Time, respect Daylight Saving Time (DST), and follow these ISO 8601 formats: * `month`: `YYYY-MM` (e.g., `2024-01`) * `day`: `YYYY-MM-DD` (e.g., `2024-01-10`) * `hour`: `YYYY-MM-DDTHH` (e.g., `2024-01-10T00`) If the time range filter does not align with the selected time dimension, the range is expanded to encompass the full period of the finest-grained time dimension. For example, if the filter is `2026-01-10` through `2026-01-12` and the `month` dimension is selected, the effective time range expands to include all of January (`2026-01-01` to `2026-02-01`).",
          "type": "array"
        }
      }
    },
    "Location": {
      "type": "object",
      "id": "Location",
      "properties": {
        "metadata": {
          "description": "Service-specific metadata. For example the available capacity at the given location.",
          "type": "object",
          "additionalProperties": {
            "description": "Properties of the object. Contains field @type with type URL.",
            "type": "any"
          }
        },
        "name": {
          "description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
          "type": "string"
        },
        "displayName": {
          "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
          "type": "string"
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}"
        },
        "locationId": {
          "description": "The canonical id for this location. For example: `\"us-east1\"`.",
          "type": "string"
        }
      },
      "description": "A resource that represents a Google Cloud location."
    },
    "ListLocationsResponse": {
      "description": "The response message for Locations.ListLocations.",
      "type": "object",
      "id": "ListLocationsResponse",
      "properties": {
        "locations": {
          "type": "array",
          "description": "A list of locations that matches the specified filter in the request.",
          "items": {
            "$ref": "Location"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "The standard List next-page token."
        }
      }
    },
    "ListOperationsResponse": {
      "id": "ListOperationsResponse",
      "description": "The response message for Operations.ListOperations.",
      "properties": {
        "nextPageToken": {
          "description": "The standard List next-page token.",
          "type": "string"
        },
        "operations": {
          "type": "array",
          "items": {
            "$ref": "Operation"
          },
          "description": "A list of operations that matches the specified filter in the request."
        },
        "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.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "Status": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "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."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "description": "Properties of the object. Contains field @type with type URL.",
              "type": "any"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code.",
          "format": "int32"
        }
      },
      "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).",
      "id": "Status"
    },
    "Column": {
      "id": "Column",
      "description": "Describes a single column within `Columns`.",
      "type": "object",
      "properties": {
        "mode": {
          "description": "The mode of the column, indicating if it is nullable, required, or repeated. Possible values: * `NULLABLE`: The column allows NULL values. * `REQUIRED`: The column does not allow NULL values. * `REPEATED`: The column contains an array of values.",
          "type": "string"
        },
        "columns": {
          "items": {
            "$ref": "Column"
          },
          "type": "array",
          "description": "If the `type` of this column is `RECORD`, this sub-field describes the nested structure."
        },
        "name": {
          "type": "string",
          "description": "The name of the column. This field: * Contains only letters (a-z, A-Z), numbers (0-9), or underscores (_); * Start with a letter or underscore; and * Has a maximum length is 128 characters."
        },
        "type": {
          "type": "string",
          "description": "The data type of the column. Supported values include: * `STRING` * `INT64` * `FLOAT64` * `BOOLEAN` * `TIMESTAMP` * `RECORD` `RECORD` indicates that the field contains a nested schema, described in the `columns` property of this `Column`."
        }
      }
    },
    "Operation": {
      "description": "This resource represents a long-running operation that is the result of a network API call.",
      "properties": {
        "name": {
          "type": "string",
          "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}`."
        },
        "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.",
          "type": "object",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          }
        },
        "response": {
          "type": "object",
          "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`.",
          "additionalProperties": {
            "description": "Properties of the object. Contains field @type with type URL.",
            "type": "any"
          }
        },
        "error": {
          "description": "The error result of the operation in case of failure or cancellation.",
          "$ref": "Status"
        },
        "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."
        }
      },
      "type": "object",
      "id": "Operation"
    },
    "Scope": {
      "properties": {
        "application": {
          "type": "string",
          "description": "Required. An App Hub Application to fetch data from. Format: `\"projects/{project}/locations/{location}/applications/{application}\"`."
        },
        "project": {
          "description": "Required. A Google Cloud Platform project to fetch data from. Format: `\"projects/{project}\"`.",
          "type": "string"
        }
      },
      "description": "Specifies the report scope.",
      "type": "object",
      "id": "Scope"
    },
    "OperationMetadata": {
      "type": "object",
      "description": "Represents metadata related to the creation of a Report. This value is embedded in the Operation object returned by `CreateReport`.",
      "properties": {},
      "id": "OperationMetadata"
    },
    "ReadReportResponse": {
      "properties": {
        "columns": {
          "description": "The columns describing the structure of the data in the `rows` field.",
          "type": "array",
          "items": {
            "$ref": "Column"
          }
        },
        "rows": {
          "description": "A list of rows, where each row represents a record from the report.",
          "type": "array",
          "items": {
            "items": {
              "type": "any"
            },
            "type": "array"
          }
        },
        "nextPageToken": {
          "description": "A token that can be sent as `page_token` in a subsequent `ReadReport` request to retrieve the next page of results. If this field is empty, there are no further pages.",
          "type": "string"
        }
      },
      "type": "object",
      "description": "Response message for the `ReadReport` method.",
      "id": "ReadReportResponse"
    },
    "Empty": {
      "id": "Empty",
      "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); }",
      "properties": {},
      "type": "object"
    },
    "CancelOperationRequest": {
      "description": "The request message for Operations.CancelOperation.",
      "type": "object",
      "properties": {},
      "id": "CancelOperationRequest"
    },
    "ListReportsResponse": {
      "id": "ListReportsResponse",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "A token that can be sent as `page_token` to retrieve the next page. If this field is empty, there are no subsequent pages."
        },
        "reports": {
          "description": "The list of reports.",
          "type": "array",
          "items": {
            "$ref": "Report"
          }
        }
      },
      "description": "Response message for the `ListReports` method."
    },
    "ReadReportRequest": {
      "id": "ReadReportRequest",
      "description": "Request message for the `ReadReport` method.",
      "properties": {
        "pageSize": {
          "type": "integer",
          "format": "int32",
          "description": "Optional. The maximum number of rows to return. The service may return fewer than this value. If unspecified, at most 10,000 rows will be returned per page. The maximum allowed value is 25,000; values above 25,000 are coerced to 25,000."
        },
        "pageToken": {
          "description": "Optional. A page token, received from a previous `ReadReport` call, to retrieve the subsequent page of results. When `page_token` is specified, `job_reference` must also be provided from the previous response, and the `statement` field must not be set.",
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "ownerName": "Google",
  "rootUrl": "https://appoptimize.googleapis.com/",
  "version": "v1beta",
  "title": "App Optimize API",
  "resources": {
    "projects": {
      "resources": {
        "locations": {
          "resources": {
            "reports": {
              "methods": {
                "list": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/reports",
                  "path": "v1beta/{+parent}/reports",
                  "parameters": {
                    "pageSize": {
                      "description": "Optional. The maximum number of reports to return. The service may return fewer than this value. If unspecified, the server will determine the number of results to return.",
                      "format": "int32",
                      "location": "query",
                      "type": "integer"
                    },
                    "pageToken": {
                      "location": "query",
                      "type": "string",
                      "description": "Optional. A page token, received from a previous `ListReports` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListReports` must match the call that provided the page token."
                    },
                    "parent": {
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "description": "Required. The parent project whose reports are to be listed. Format: `projects/{project}/locations/{location}`.",
                      "type": "string",
                      "location": "path",
                      "required": true
                    }
                  },
                  "description": "Lists reports within a given project.",
                  "response": {
                    "$ref": "ListReportsResponse"
                  },
                  "id": "appoptimize.projects.locations.reports.list",
                  "parameterOrder": [
                    "parent"
                  ],
                  "httpMethod": "GET"
                },
                "delete": {
                  "parameterOrder": [
                    "name"
                  ],
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/reports/[^/]+$",
                      "location": "path",
                      "required": true,
                      "description": "Required. The name of the report to delete. Format: `projects/{project}/locations/{location}/reports/{report_id}`."
                    },
                    "allowMissing": {
                      "type": "boolean",
                      "location": "query",
                      "description": "Optional. If set to true, and the report is not found, the request will succeed but no action will be taken on the server."
                    }
                  },
                  "id": "appoptimize.projects.locations.reports.delete",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "path": "v1beta/{+name}",
                  "httpMethod": "DELETE",
                  "description": "Deletes the specified report.",
                  "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/reports/{reportsId}"
                },
                "create": {
                  "path": "v1beta/{+parent}/reports",
                  "parameters": {
                    "reportId": {
                      "type": "string",
                      "location": "query",
                      "description": "Required. The ID to use for this report. This ID must be unique within the parent project and should comply with RFC 1034 restrictions (letters, numbers, and hyphen, with the first character a letter, the last a letter or a number, and a 63 character maximum)."
                    },
                    "parent": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "description": "Required. The parent Google Cloud project that will own the report. This value does not define the scope of the report data. See `Report.scope` for setting the data scope. Format: `projects/{project}/locations/{location}`.",
                      "location": "path",
                      "required": true
                    }
                  },
                  "description": "Creates a new report. This initiates a long-running operation that, upon completion, results in a report resource. Once the report is created, its results can be read via `ReadReport`.",
                  "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/reports",
                  "id": "appoptimize.projects.locations.reports.create",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "POST",
                  "request": {
                    "$ref": "Report"
                  },
                  "response": {
                    "$ref": "Operation"
                  },
                  "parameterOrder": [
                    "parent"
                  ]
                },
                "read": {
                  "description": "Reads data within a specified report.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "response": {
                    "$ref": "ReadReportResponse"
                  },
                  "request": {
                    "$ref": "ReadReportRequest"
                  },
                  "httpMethod": "POST",
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "appoptimize.projects.locations.reports.read",
                  "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/reports/{reportsId}:read",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Required. The resource name of the report to query. Format: `projects/{project}/locations/{location}/reports/{report_id}`.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/reports/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "path": "v1beta/{+name}:read"
                },
                "get": {
                  "response": {
                    "$ref": "Report"
                  },
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/reports/{reportsId}",
                  "parameterOrder": [
                    "name"
                  ],
                  "id": "appoptimize.projects.locations.reports.get",
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the report to retrieve. Format: `projects/{project}/locations/{location}/reports/{report_id}`.",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/reports/[^/]+$"
                    }
                  },
                  "path": "v1beta/{+name}",
                  "description": "Retrieves the details of a report configuration."
                }
              }
            },
            "operations": {
              "methods": {
                "delete": {
                  "id": "appoptimize.projects.locations.operations.delete",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "httpMethod": "DELETE",
                  "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "path": "v1beta/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "The name of the operation resource to be deleted.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "response": {
                    "$ref": "Empty"
                  }
                },
                "cancel": {
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "The name of the operation resource to be cancelled.",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "id": "appoptimize.projects.locations.operations.cancel",
                  "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
                  "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
                  "parameterOrder": [
                    "name"
                  ],
                  "httpMethod": "POST",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "request": {
                    "$ref": "CancelOperationRequest"
                  },
                  "response": {
                    "$ref": "Empty"
                  },
                  "path": "v1beta/{+name}:cancel"
                },
                "get": {
                  "parameterOrder": [
                    "name"
                  ],
                  "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.",
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                      "description": "The name of the operation resource.",
                      "location": "path",
                      "required": true
                    }
                  },
                  "id": "appoptimize.projects.locations.operations.get",
                  "response": {
                    "$ref": "Operation"
                  },
                  "path": "v1beta/{+name}"
                },
                "list": {
                  "response": {
                    "$ref": "ListOperationsResponse"
                  },
                  "parameters": {
                    "pageToken": {
                      "location": "query",
                      "type": "string",
                      "description": "The standard list page token."
                    },
                    "filter": {
                      "type": "string",
                      "location": "query",
                      "description": "The standard list filter."
                    },
                    "name": {
                      "type": "string",
                      "pattern": "^projects/[^/]+/locations/[^/]+$",
                      "description": "The name of the operation's parent resource.",
                      "location": "path",
                      "required": true
                    },
                    "pageSize": {
                      "location": "query",
                      "type": "integer",
                      "format": "int32",
                      "description": "The standard list page size."
                    },
                    "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"
                    }
                  },
                  "id": "appoptimize.projects.locations.operations.list",
                  "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform"
                  ],
                  "parameterOrder": [
                    "name"
                  ],
                  "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/operations",
                  "httpMethod": "GET",
                  "path": "v1beta/{+name}/operations"
                }
              }
            }
          },
          "methods": {
            "get": {
              "response": {
                "$ref": "Location"
              },
              "parameters": {
                "name": {
                  "description": "Resource name for the location.",
                  "location": "path",
                  "required": true,
                  "pattern": "^projects/[^/]+/locations/[^/]+$",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}",
              "httpMethod": "GET",
              "description": "Gets information about a location.",
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "id": "appoptimize.projects.locations.get",
              "path": "v1beta/{+name}"
            },
            "list": {
              "path": "v1beta/{+name}/locations",
              "id": "appoptimize.projects.locations.list",
              "parameters": {
                "filter": {
                  "location": "query",
                  "type": "string",
                  "description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160)."
                },
                "name": {
                  "pattern": "^projects/[^/]+$",
                  "location": "path",
                  "required": true,
                  "description": "The resource that owns the locations collection, if applicable.",
                  "type": "string"
                },
                "pageSize": {
                  "location": "query",
                  "format": "int32",
                  "description": "The maximum number of results to return. If not set, the service selects a default.",
                  "type": "integer"
                },
                "pageToken": {
                  "description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
                  "type": "string",
                  "location": "query"
                },
                "extraLocationTypes": {
                  "repeated": true,
                  "location": "query",
                  "type": "string",
                  "description": "Optional. Do not use this field unless explicitly documented otherwise. This is primarily for internal usage."
                }
              },
              "description": "Lists information about the supported locations for this service. This method lists locations based on the resource scope provided in the ListLocationsRequest.name field: * **Global locations**: If `name` is empty, the method lists the public locations available to all projects. * **Project-specific locations**: If `name` follows the format `projects/{project}`, the method lists locations visible to that specific project. This includes public, private, or other project-specific locations enabled for the project. For gRPC and client library implementations, the resource name is passed as the `name` field. For direct service calls, the resource name is incorporated into the request path based on the specific service implementation and version.",
              "response": {
                "$ref": "ListLocationsResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/cloud-platform"
              ],
              "parameterOrder": [
                "name"
              ],
              "flatPath": "v1beta/projects/{projectsId}/locations",
              "httpMethod": "GET"
            }
          }
        }
      }
    }
  },
  "batchPath": "batch",
  "revision": "20260916",
  "parameters": {
    "uploadType": {
      "location": "query",
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")."
    },
    "key": {
      "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",
      "type": "string"
    },
    "$.xgafv": {
      "type": "string",
      "description": "V1 error format.",
      "location": "query",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ]
    },
    "alt": {
      "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"
      ],
      "type": "string",
      "description": "Data format for response.",
      "default": "json"
    },
    "fields": {
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query",
      "type": "string"
    },
    "access_token": {
      "description": "OAuth access token.",
      "location": "query",
      "type": "string"
    },
    "upload_protocol": {
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query",
      "type": "string"
    },
    "quotaUser": {
      "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.",
      "type": "string",
      "location": "query"
    },
    "prettyPrint": {
      "default": "true",
      "description": "Returns response with indentations and line breaks.",
      "location": "query",
      "type": "boolean"
    },
    "callback": {
      "location": "query",
      "type": "string",
      "description": "JSONP"
    },
    "oauth_token": {
      "description": "OAuth 2.0 token for the current user.",
      "location": "query",
      "type": "string"
    }
  },
  "documentationLink": "https://cloud.google.com/hub/docs/optimize",
  "version_module": true,
  "kind": "discovery#restDescription",
  "id": "appoptimize:v1beta",
  "description": "The App Optimize API provides developers and platform teams with tools to monitor, analyze, and improve the performance and cost-efficiency of their cloud applications.",
  "name": "appoptimize",
  "fullyEncodeReservedExpansion": true,
  "servicePath": "",
  "basePath": "",
  "baseUrl": "https://appoptimize.googleapis.com/",
  "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."
        }
      }
    }
  },
  "protocol": "rest",
  "ownerDomain": "google.com",
  "mtlsRootUrl": "https://appoptimize.mtls.googleapis.com/"
}
