{
  "discoveryVersion": "v1",
  "canonicalName": "Firebase ML",
  "revision": "20260628",
  "ownerDomain": "google.com",
  "version_module": true,
  "schemas": {
    "Operation": {
      "id": "Operation",
      "description": "This resource represents a long-running operation that is the result of a network API call.",
      "type": "object",
      "properties": {
        "done": {
          "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": "boolean"
        },
        "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"
        },
        "response": {
          "type": "object",
          "additionalProperties": {
            "description": "Properties of the object. Contains field @type with type URL.",
            "type": "any"
          },
          "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`."
        },
        "error": {
          "$ref": "Status",
          "description": "The error result of the operation in case of failure or cancellation."
        },
        "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}`."
        }
      }
    },
    "Status": {
      "type": "object",
      "properties": {
        "code": {
          "description": "The status code, which should be an enum value of google.rpc.Code.",
          "type": "integer",
          "format": "int32"
        },
        "details": {
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "description": "Properties of the object. Contains field @type with type URL.",
              "type": "any"
            }
          }
        },
        "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": "Status",
      "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)."
    },
    "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); }",
      "type": "object",
      "properties": {}
    },
    "ModelOperationMetadata": {
      "id": "ModelOperationMetadata",
      "description": "This is returned in the longrunning operations for create/update.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the model we are creating/updating The name must have the form `projects/{project_id}/models/{model_id}`"
        },
        "basicOperationStatus": {
          "type": "string",
          "enumDescriptions": [
            "The status is unspecified",
            "The model file is being uploaded",
            "The model file is being verified"
          ],
          "enum": [
            "BASIC_OPERATION_STATUS_UNSPECIFIED",
            "BASIC_OPERATION_STATUS_UPLOADING",
            "BASIC_OPERATION_STATUS_VERIFYING"
          ]
        }
      }
    },
    "CancelOperationRequest": {
      "id": "CancelOperationRequest",
      "description": "The request message for Operations.CancelOperation.",
      "properties": {},
      "type": "object"
    },
    "ListOperationsResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "The standard List next-page token."
        },
        "unreachable": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "operations": {
          "description": "A list of operations that matches the specified filter in the request.",
          "type": "array",
          "items": {
            "$ref": "Operation"
          }
        }
      },
      "id": "ListOperationsResponse",
      "description": "The response message for Operations.ListOperations."
    }
  },
  "description": "Access custom machine learning models hosted via Firebase ML.",
  "basePath": "",
  "servicePath": "",
  "baseUrl": "https://firebaseml.googleapis.com/",
  "kind": "discovery#restDescription",
  "protocol": "rest",
  "version": "v1",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "title": "Firebase ML API",
  "documentationLink": "https://firebase.google.com",
  "fullyEncodeReservedExpansion": true,
  "name": "firebaseml",
  "mtlsRootUrl": "https://firebaseml.mtls.googleapis.com/",
  "batchPath": "batch",
  "id": "firebaseml:v1",
  "resources": {
    "operations": {
      "methods": {
        "list": {
          "id": "firebaseml.operations.list",
          "response": {
            "$ref": "ListOperationsResponse"
          },
          "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
          "parameterOrder": [
            "name"
          ],
          "flatPath": "v1/operations",
          "parameters": {
            "name": {
              "type": "string",
              "description": "The name of the operation's parent resource.",
              "required": true,
              "location": "path",
              "pattern": "^operations$"
            },
            "pageToken": {
              "type": "string",
              "description": "The standard list page token.",
              "location": "query"
            },
            "pageSize": {
              "description": "The standard list page size.",
              "location": "query",
              "type": "integer",
              "format": "int32"
            },
            "filter": {
              "description": "The standard list filter.",
              "location": "query",
              "type": "string"
            },
            "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"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "path": "v1/{+name}",
          "httpMethod": "GET"
        },
        "delete": {
          "response": {
            "$ref": "Empty"
          },
          "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`.",
          "id": "firebaseml.operations.delete",
          "flatPath": "v1/operations/{operationsId}",
          "parameters": {
            "name": {
              "pattern": "^operations/.*$",
              "type": "string",
              "location": "path",
              "description": "The name of the operation resource to be deleted.",
              "required": true
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "path": "v1/{+name}",
          "httpMethod": "DELETE",
          "parameterOrder": [
            "name"
          ]
        },
        "cancel": {
          "id": "firebaseml.operations.cancel",
          "response": {
            "$ref": "Empty"
          },
          "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`.",
          "parameterOrder": [
            "name"
          ],
          "request": {
            "$ref": "CancelOperationRequest"
          },
          "flatPath": "v1/operations/{operationsId}:cancel",
          "parameters": {
            "name": {
              "type": "string",
              "location": "path",
              "description": "The name of the operation resource to be cancelled.",
              "required": true,
              "pattern": "^operations/.*$"
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/cloud-platform"
          ],
          "path": "v1/{+name}:cancel",
          "httpMethod": "POST"
        }
      }
    }
  },
  "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."
        }
      }
    }
  },
  "rootUrl": "https://firebaseml.googleapis.com/",
  "ownerName": "Google",
  "parameters": {
    "upload_protocol": {
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query",
      "type": "string"
    },
    "prettyPrint": {
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "default": "true",
      "location": "query"
    },
    "fields": {
      "location": "query",
      "description": "Selector specifying which fields to include in a partial response.",
      "type": "string"
    },
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "key": {
      "location": "query",
      "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.",
      "type": "string"
    },
    "quotaUser": {
      "location": "query",
      "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"
    },
    "access_token": {
      "type": "string",
      "location": "query",
      "description": "OAuth access token."
    },
    "$.xgafv": {
      "description": "V1 error format.",
      "location": "query",
      "type": "string",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ]
    },
    "callback": {
      "location": "query",
      "description": "JSONP",
      "type": "string"
    },
    "alt": {
      "location": "query",
      "description": "Data format for response.",
      "type": "string",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "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"
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    }
  }
}
