{
  "components": {
    "parameters": {
      "IdempotencyKey": {
        "description": "Replay-safe mutation key, 1-255 printable ASCII; kept 24 hours (§3.6).",
        "in": "header",
        "name": "Idempotency-Key",
        "required": false,
        "schema": {
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        }
      },
      "SylphxVersion": {
        "description": "API version date YYYY-MM-DD for this request (§5).",
        "in": "header",
        "name": "Sylphx-Version",
        "required": false,
        "schema": {
          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
          "type": "string"
        }
      }
    },
    "responses": {
      "Problem": {
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/sylphx.common.v1.ProblemDetails"
            }
          }
        },
        "description": "RFC 9457 problem details (§3.8)."
      }
    },
    "schemas": {
      "sylphx.access.v1.AiSpendLimit": {
        "description": "AiSpendLimit caps Sylphx AI spend at the sell price, in USD cents. A day\nand a month are UTC calendar periods.",
        "properties": {
          "daily_usd_minor": {
            "description": "Most spend per calendar day, in USD cents.",
            "format": "int64",
            "type": "string"
          },
          "monthly_usd_minor": {
            "description": "Most spend per calendar month, in USD cents.",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.access.v1.ApiKey": {
        "description": "An ApiKey is a credential of one environment, or an org-wide key of an\norg (it acts on every project of the org), issued only by Access (the\nplatform has one key system). The secret is returned once, by Create and\nRoll, and never again.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/api_keys/{api_key}`, or\n`orgs/{org}/api_keys/{api_key}` for an org-wide key.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.access.v1.ApiKeySpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.access.v1.ApiKeyStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`key_<cell><ulid>`; equals the name segment.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.access.v1.ApiKeyKind": {
        "description": "ApiKeyKind is whether a key may be shipped to a browser.",
        "enum": [
          "secret",
          "publishable"
        ],
        "type": "string"
      },
      "sylphx.access.v1.ApiKeySpec": {
        "description": "ApiKeySpec is the caller-writable state of an ApiKey.",
        "properties": {
          "expire_time": {
            "description": "When the key stops verifying; required in unclaimed projects.",
            "format": "date-time",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.access.v1.ApiKeyKind",
            "description": "Secret (server-side) or publishable (browser, `publishable_ok` methods\nonly).",
            "x-sylphx-immutable": true
          },
          "label": {
            "description": "A free-form label, for example the talent id a key was minted for.",
            "type": "string"
          },
          "limits": {
            "$ref": "#/components/schemas/sylphx.access.v1.UsageLimits",
            "description": "Usage limits on this key, on top of its project's and the plan tier's;\nthe tightest one applies. Unset means no key-level limit."
          },
          "scopes": {
            "description": "Scopes `<service>:<action>`, a subset of the creator's effective scopes.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-immutable": true
          }
        },
        "required": [
          "kind",
          "scopes"
        ],
        "type": "object"
      },
      "sylphx.access.v1.ApiKeyStatus": {
        "description": "ApiKeyStatus is the observed state of an ApiKey.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "last4": {
            "description": "The last four characters, for display.",
            "readOnly": true,
            "type": "string"
          },
          "last_use_ip": {
            "description": "The client address of the key's last use.",
            "readOnly": true,
            "type": "string"
          },
          "last_use_time": {
            "description": "When the key last verified, at snapshot granularity.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "principal": {
            "description": "The key's own principal.",
            "readOnly": true,
            "type": "string"
          },
          "revoke_reason": {
            "$ref": "#/components/schemas/sylphx.access.v1.RevokeReason",
            "description": "Why the key was revoked.",
            "readOnly": true
          },
          "revoke_time": {
            "description": "Set when the key was revoked.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "role_bound": {
            "description": "A device key (`sylphx login`): bound to the approving human's role in\nthe org, and revoked when that role changes or the human leaves.",
            "readOnly": true,
            "type": "boolean"
          },
          "secret": {
            "description": "The full key. Set only in the responses of Create and Roll.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-sensitive": true
          }
        },
        "type": "object"
      },
      "sylphx.access.v1.CreateApiKeyRequest": {
        "description": "The request of CreateApiKey.",
        "properties": {
          "api_key": {
            "$ref": "#/components/schemas/sylphx.access.v1.ApiKey",
            "description": "The API key to create; only spec and caller-writable metadata are read."
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/ApiKey"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "api_key"
        ],
        "type": "object"
      },
      "sylphx.access.v1.CreateEnvironmentRequest": {
        "description": "The request of CreateEnvironment.",
        "properties": {
          "environment": {
            "$ref": "#/components/schemas/sylphx.access.v1.Environment",
            "description": "The environment to create; only spec and caller-writable metadata are read."
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Environment"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "environment"
        ],
        "type": "object"
      },
      "sylphx.access.v1.CreateOrgRequest": {
        "description": "The request of CreateOrg.",
        "properties": {
          "org": {
            "$ref": "#/components/schemas/sylphx.access.v1.Org",
            "description": "The org to create; only spec and caller-writable metadata are read."
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "org"
        ],
        "type": "object"
      },
      "sylphx.access.v1.CreateProjectRequest": {
        "description": "The request of CreateProject.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Project"
          },
          "project": {
            "$ref": "#/components/schemas/sylphx.access.v1.Project",
            "description": "The project to create; only spec and caller-writable metadata are read."
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "project"
        ],
        "type": "object"
      },
      "sylphx.access.v1.DeleteApiKeyRequest": {
        "description": "The request of DeleteApiKey.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the API key to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/ApiKey"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.access.v1.DeleteEnvironmentRequest": {
        "description": "The request of DeleteEnvironment.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete every child Resource; without it a parent with children\nfails with FAILED_PRECONDITION.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the environment to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Environment"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.access.v1.DeleteOrgRequest": {
        "description": "The request of DeleteOrg.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete every child Resource; without it a parent with children\nfails with FAILED_PRECONDITION.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the org to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Org"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.access.v1.DeleteProjectRequest": {
        "description": "The request of DeleteProject.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete every child Resource; without it a parent with children\nfails with FAILED_PRECONDITION.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the project to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Project"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.access.v1.Environment": {
        "description": "An Environment is a deployment target inside a Project (production,\npreview, dev, ...). Its mode decides which keys may touch it.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.access.v1.EnvironmentSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.access.v1.EnvironmentStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`env_<cell><ulid>`; equals the name segment.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.access.v1.EnvironmentMode": {
        "description": "EnvironmentMode separates live traffic from tests.",
        "enum": [
          "live",
          "test"
        ],
        "type": "string"
      },
      "sylphx.access.v1.EnvironmentSpec": {
        "description": "EnvironmentSpec is the caller-writable state of an Environment.",
        "properties": {
          "mode": {
            "$ref": "#/components/schemas/sylphx.access.v1.EnvironmentMode",
            "description": "Live or test; a test key never touches a live environment.",
            "x-sylphx-immutable": true
          },
          "slug": {
            "description": "Unique within the project, for example `production`.",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "mode"
        ],
        "type": "object"
      },
      "sylphx.access.v1.EnvironmentStatus": {
        "description": "EnvironmentStatus is the observed state of an Environment.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.access.v1.GetApiKeyRequest": {
        "description": "The request of GetApiKey.",
        "properties": {
          "name": {
            "description": "The name of the API key to get.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/ApiKey"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.access.v1.GetEnvironmentRequest": {
        "description": "The request of GetEnvironment.",
        "properties": {
          "name": {
            "description": "The name of the environment to get.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Environment"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.access.v1.GetOrgRequest": {
        "description": "The request of GetOrg.",
        "properties": {
          "name": {
            "description": "The name of the org to get.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Org"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.access.v1.GetProjectRequest": {
        "description": "The request of GetProject.",
        "properties": {
          "name": {
            "description": "The name of the project to get.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Project"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.access.v1.GetServiceEnablementRequest": {
        "description": "The request of GetServiceEnablement.",
        "properties": {
          "name": {
            "description": "The name of the service enablement to get.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/ServiceEnablement"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.access.v1.ListApiKeysRequest": {
        "description": "The request of ListApiKeys.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable spec fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/ApiKey"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.access.v1.ListApiKeysResponse": {
        "description": "The response of ListApiKeys.",
        "properties": {
          "api_keys": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.access.v1.ListEnvironmentsRequest": {
        "description": "The request of ListEnvironments.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable spec fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Environment"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.access.v1.ListEnvironmentsResponse": {
        "description": "The response of ListEnvironments.",
        "properties": {
          "envs": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.access.v1.Environment"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.access.v1.ListOrgsRequest": {
        "description": "The request of ListOrgs.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable spec fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.access.v1.ListOrgsResponse": {
        "description": "The response of ListOrgs.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "orgs": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.access.v1.Org"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.access.v1.ListProjectsRequest": {
        "description": "The request of ListProjects.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable spec fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Project"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.access.v1.ListProjectsResponse": {
        "description": "The response of ListProjects.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "projects": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.access.v1.Project"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.access.v1.ListServiceEnablementsRequest": {
        "description": "The request of ListServiceEnablements.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable spec fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/ServiceEnablement"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.access.v1.ListServiceEnablementsResponse": {
        "description": "The response of ListServiceEnablements.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "service_enablements": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.access.v1.ServiceEnablement"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.access.v1.Org": {
        "description": "An Org is the one Sylphx account: created once, billed once.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.access.v1.OrgSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.access.v1.OrgStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`org_<cell><ulid>`; equals the name segment.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.access.v1.OrgKind": {
        "description": "OrgKind is how an Org came to exist (onboarding spec §3).",
        "enum": [
          "standard",
          "unclaimed",
          "partner_sub"
        ],
        "type": "string"
      },
      "sylphx.access.v1.OrgSpec": {
        "description": "OrgSpec is the caller-writable state of an Org.",
        "properties": {
          "api_version": {
            "description": "The API version (`YYYY-MM-DD`) requests are served at when neither the\nrequest nor the key pins one.",
            "type": "string"
          },
          "slug": {
            "description": "Globally unique handle, resolved to the id by clients, never the server.",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "sylphx.access.v1.OrgState": {
        "description": "OrgState is the lifecycle state of an Org.",
        "enum": [
          "active",
          "suspended",
          "deleting"
        ],
        "type": "string"
      },
      "sylphx.access.v1.OrgStatus": {
        "description": "OrgStatus is the observed state of an Org.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "home_cell": {
            "description": "The org's home cell code, for example `fs01`.",
            "readOnly": true,
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.access.v1.OrgKind",
            "description": "How the org was created.",
            "readOnly": true
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "parent_org": {
            "description": "The partner org, set iff `kind` is PARTNER_SUB.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Org"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.access.v1.OrgState",
            "description": "The org's lifecycle state.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.access.v1.Project": {
        "description": "A Project groups environments and the Resources in them.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.access.v1.ProjectSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.access.v1.ProjectStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`prj_<cell><ulid>`; equals the name segment.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.access.v1.ProjectSpec": {
        "description": "ProjectSpec is the caller-writable state of a Project.",
        "properties": {
          "limits": {
            "$ref": "#/components/schemas/sylphx.access.v1.UsageLimits",
            "description": "Usage limits shared by every key of the project; a key's own limits\nonly tighten them. Unset means no project-level limit."
          },
          "slug": {
            "description": "Unique within the org.",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "sylphx.access.v1.ProjectStatus": {
        "description": "ProjectStatus is the observed state of a Project.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "expire_time": {
            "description": "When an unclaimed project expires; unset once claimed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.access.v1.RevokeApiKeyRequest": {
        "description": "The request of RevokeApiKey.",
        "properties": {
          "etag": {
            "description": "Revoke only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the API key to revoke.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/ApiKey"
          },
          "validate_only": {
            "description": "Validate without revoking.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.access.v1.RevokeReason": {
        "description": "RevokeReason is why an ApiKey stopped verifying.",
        "enum": [
          "user",
          "rotation",
          "leaked",
          "claimed",
          "claim_expired",
          "org_deleted",
          "admin",
          "role_changed",
          "logout"
        ],
        "type": "string"
      },
      "sylphx.access.v1.RollApiKeyRequest": {
        "description": "The request of RollApiKey.",
        "properties": {
          "etag": {
            "description": "Roll only if the current etag matches.",
            "type": "string"
          },
          "grace_period": {
            "description": "How long the old key keeps verifying; default 24h.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "name": {
            "description": "The name of the API key to roll.",
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/ApiKey"
          },
          "validate_only": {
            "description": "Validate without rolling.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.access.v1.ServiceEnablement": {
        "description": "A ServiceEnablement says whether one service is enabled on a Project: the\nproject's keys reach a service only while it is enabled (onboarding spec\n§3.2). It is project-scoped, applies to every environment of the project,\nand is named by the service id (`data`, `hosting`, ...): the rows are fixed\nby the platform's service list, so there is no create or delete, and an\nupdate writes `spec.enabled`.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/service_enablements/{service}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.access.v1.ServiceEnablementSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.access.v1.ServiceEnablementStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "The service id; equals the name segment.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.access.v1.ServiceEnablementSpec": {
        "description": "ServiceEnablementSpec is the caller-writable state of a ServiceEnablement.",
        "properties": {
          "enabled": {
            "description": "Whether the project's keys may reach the service.",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "type": "object"
      },
      "sylphx.access.v1.ServiceEnablementStatus": {
        "description": "ServiceEnablementStatus is the observed state of a ServiceEnablement.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.access.v1.UpdateApiKeyRequest": {
        "description": "The request of UpdateApiKey.",
        "properties": {
          "api_key": {
            "$ref": "#/components/schemas/sylphx.access.v1.ApiKey",
            "description": "The API key to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "api_key"
        ],
        "type": "object"
      },
      "sylphx.access.v1.UpdateEnvironmentRequest": {
        "description": "The request of UpdateEnvironment.",
        "properties": {
          "environment": {
            "$ref": "#/components/schemas/sylphx.access.v1.Environment",
            "description": "The environment to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "environment"
        ],
        "type": "object"
      },
      "sylphx.access.v1.UpdateOrgRequest": {
        "description": "The request of UpdateOrg.",
        "properties": {
          "org": {
            "$ref": "#/components/schemas/sylphx.access.v1.Org",
            "description": "The org to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "org"
        ],
        "type": "object"
      },
      "sylphx.access.v1.UpdateProjectRequest": {
        "description": "The request of UpdateProject.",
        "properties": {
          "project": {
            "$ref": "#/components/schemas/sylphx.access.v1.Project",
            "description": "The project to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "project"
        ],
        "type": "object"
      },
      "sylphx.access.v1.UpdateServiceEnablementRequest": {
        "description": "The request of UpdateServiceEnablement.",
        "properties": {
          "service_enablement": {
            "$ref": "#/components/schemas/sylphx.access.v1.ServiceEnablement",
            "description": "The service enablement to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "service_enablement"
        ],
        "type": "object"
      },
      "sylphx.access.v1.UsageLimits": {
        "description": "UsageLimits are the limits a customer sets on a key or a project. Each is\nenforced before a call is served; a call over one is refused with\nRATE_LIMITED or SPEND_LIMIT_REACHED and is not billed. An unset field sets\nno limit at this level.",
        "properties": {
          "ai_spend": {
            "$ref": "#/components/schemas/sylphx.access.v1.AiSpendLimit",
            "description": "Sylphx AI spend."
          },
          "ai_tokens_per_minute": {
            "description": "Sylphx AI tokens per minute, input and output together.",
            "format": "int64",
            "type": "string"
          },
          "requests_per_minute": {
            "description": "Requests per minute.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.access.v1.WhoamiRequest": {
        "description": "The request of Whoami.",
        "properties": {},
        "type": "object"
      },
      "sylphx.access.v1.WhoamiResponse": {
        "description": "The caller of a request.",
        "properties": {
          "api_key": {
            "description": "The API key that authenticated the request; empty for an OAuth token.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/ApiKey"
          },
          "api_version": {
            "description": "The API version date applied to this request; empty before the first\nversion.",
            "readOnly": true,
            "type": "string"
          },
          "env": {
            "description": "The environment the credential is scoped to; empty above an environment.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Environment"
          },
          "org": {
            "description": "The org the credential is scoped to.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Org"
          },
          "principal": {
            "description": "The authenticated principal, `principal_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          },
          "project": {
            "description": "The project the credential is scoped to; empty for an org-wide credential.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Project"
          },
          "scopes": {
            "description": "The credential's scopes, `<service>:<action>`.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.Agent": {
        "description": "An Agent is a versioned agent definition: model, instructions, tools, MCP\nservers, skills, memory stores, tool policy and budget. Each create or\nupdate that changes `spec` mints a new immutable AgentVersion; a session\npins the version it started on, so a change never alters a running\nconversation.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/agents/{agent}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.agents.v1.AgentSpec",
            "description": "Desired state: the definition the next version takes."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.agents.v1.AgentStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`agt_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.AgentBudget": {
        "description": "AgentBudget caps what one turn and one session may spend.",
        "properties": {
          "max_session_spend_micros": {
            "description": "Spend per session in micro-USD, models and tools together; 0 is the\nproject's spend limit only.",
            "format": "int64",
            "type": "string"
          },
          "max_steps_per_turn": {
            "description": "Model and tool steps per turn, 1 to 1000; default 100.",
            "format": "int32",
            "type": "integer"
          },
          "turn_timeout": {
            "description": "One turn's wall-clock deadline, 10s to 24h; default 30m.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.AgentSession": {
        "description": "An AgentSession is a durable conversation with one pinned AgentVersion.\nIts conversation is its SessionEvent log. Each turn runs as one Sylphx\nWorkflows Run, and each model call and tool call is a step keyed by\n`(session, turn, step)`, assigned by the runtime and never taken from the\nmodel's tool-call id. An idle session holds no Run and no compute.",
        "properties": {
          "agent": {
            "description": "The Agent the session talks to.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "agents.sylphx.com/Agent"
          },
          "agent_version": {
            "description": "The AgentVersion the session pinned; the Agent's current version when\nunset at create.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentVersion"
          },
          "create_time": {
            "description": "When the session was created.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "credentials": {
            "additionalProperties": {
              "$ref": "#/components/schemas/sylphx.agents.v1.CredentialBinding"
            },
            "description": "Session-scoped credential bindings, keyed by the tool or MCP credential\nname. Values are references or opaque handles, never secret values.",
            "type": "object",
            "x-sylphx-immutable": true
          },
          "end_user": {
            "description": "The Sylphx Auth end user the session belongs to, set from the caller's\nend-user session; empty for a session a secret key started. An end user\nreads and changes only their own sessions.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          },
          "environment": {
            "$ref": "#/components/schemas/sylphx.agents.v1.EnvironmentSpec",
            "description": "The immutable effective environment for this session. RunAgent resolves it\nfrom the pinned AgentVersion's frozen default and selected request overrides.\nFor CreateAgentSession, omission inherits the pinned default; an explicit\nenvironment replaces it.",
            "x-sylphx-immutable": true
          },
          "environment_lease": {
            "description": "The Sylphx Sandboxes lease attached to the session, while it has one.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "last_event_sequence": {
            "description": "The sequence of the newest event, from 0.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/agent_sessions/{agent_session}`.",
            "type": "string"
          },
          "profiles": {
            "description": "Granted platform Profiles to mount when the session starts, each by\nresource name and mode. The runtime never puts profile values in events.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.ProfileMount"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.agents.v1.SessionState",
            "description": "The session's state.",
            "readOnly": true
          },
          "title": {
            "description": "A short title; set by the caller or summarised by the runtime.",
            "type": "string"
          },
          "turn_count": {
            "description": "The number of turns started, from 0.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`ases_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "update_time": {
            "description": "When the last event was appended.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "usage": {
            "$ref": "#/components/schemas/sylphx.agents.v1.SessionUsage",
            "description": "What the session has used so far.",
            "readOnly": true
          }
        },
        "required": [
          "agent"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.AgentSpec": {
        "description": "AgentSpec is the caller-writable definition of an Agent. An AgentVersion\nholds a frozen copy of it.",
        "properties": {
          "budget": {
            "$ref": "#/components/schemas/sylphx.agents.v1.AgentBudget",
            "description": "Spend and time limits per turn and per session."
          },
          "end_user_access": {
            "description": "Whether end-user session access is intended for this agent. Reserved\nuntil the backend enforces end-user ownership; all contract methods\ncurrently require a secret key.",
            "type": "boolean"
          },
          "environment": {
            "$ref": "#/components/schemas/sylphx.agents.v1.EnvironmentSpec",
            "description": "Default session environment (shell, files, browser, computer use), frozen\nin each AgentVersion. RunAgent overlays only its selected environment\nfields on that pinned default and requires a valid fresh finite lease."
          },
          "harness": {
            "description": "The execution harness, independent of `model`: `runtime` (default),\n`claude_code` or `codex`. It is part of the immutable version, not an\nenvironment-wide setting. An omitted or empty value means `runtime`.",
            "type": "string"
          },
          "instructions": {
            "description": "The system instructions, at most 256 KiB.",
            "type": "string"
          },
          "mcp_servers": {
            "description": "The MCP servers whose tools the agent may call, at most 32.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.McpServer"
            },
            "type": "array"
          },
          "memory_stores": {
            "description": "The memory stores the agent recalls from and writes to, as MemoryStore\nnames; at most 8.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-resource-reference": "agents.sylphx.com/MemoryStore"
          },
          "model": {
            "description": "The exact Sylphx AI catalog id (`ai_models`), set per Agent through the\nAPI as runtime state, never code or a deployed file. Agents in the same\nenvironment may use different models; the harness never remaps this id.",
            "type": "string"
          },
          "skills": {
            "description": "Skills: instruction packs the agent loads when relevant, at most 64.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.Skill"
            },
            "type": "array"
          },
          "tool_policy": {
            "$ref": "#/components/schemas/sylphx.agents.v1.ToolPolicy",
            "description": "The policy every tool call passes before it runs."
          },
          "tools": {
            "description": "The tools the agent may call, at most 128, each `name` once.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.Tool"
            },
            "type": "array"
          }
        },
        "required": [
          "model"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.AgentStatus": {
        "description": "AgentStatus is the observed state of an Agent.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "current_version": {
            "description": "The newest version, which new sessions pin unless they name another.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentVersion"
          },
          "current_version_number": {
            "description": "The number of the newest version, from 1.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.AgentVersion": {
        "description": "An AgentVersion is one immutable snapshot of an Agent's definition. It is\nwritten by the create or update that changed the Agent's spec, and never\nchanged after.",
        "properties": {
          "agent_generation": {
            "description": "The Agent generation that minted it.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "create_time": {
            "description": "When it was minted.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/agents/{agent}/agent_versions/{agent_version}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.agents.v1.AgentSpec",
            "description": "The definition, frozen.",
            "readOnly": true
          },
          "uid": {
            "description": "`agv_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "version_number": {
            "description": "The version number within the agent, from 1, with no gaps.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.Approval": {
        "description": "An Approval is a tool call the policy sent to a person, and its answer.",
        "properties": {
          "call_id": {
            "description": "The ToolCall's `id`.",
            "readOnly": true,
            "type": "string"
          },
          "decision": {
            "$ref": "#/components/schemas/sylphx.agents.v1.ApprovalDecision",
            "description": "The answer, once given; unset while it waits.",
            "readOnly": true
          },
          "principal": {
            "description": "Who answered.",
            "readOnly": true,
            "type": "string"
          },
          "reason": {
            "description": "The reason given, if any.",
            "readOnly": true,
            "type": "string"
          },
          "remember": {
            "description": "Whether the answer covers later calls of the same tool in this session\n(\"always allow\").",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.ApprovalDecision": {
        "description": "ApprovalDecision is a person's answer to an approval.",
        "enum": [
          "approve",
          "reject"
        ],
        "type": "string"
      },
      "sylphx.agents.v1.BuiltinTool": {
        "description": "A BuiltinTool is a tool the platform provides.",
        "properties": {
          "config": {
            "additionalProperties": true,
            "description": "Tool-specific settings, at most 16 KiB of JSON.",
            "type": "object"
          },
          "id": {
            "description": "The built-in tool's id.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.CaptureCredentialRequest": {
        "description": "Caller-owned grant capture; only opaque metadata is returned.",
        "properties": {
          "allowed_tools": {
            "description": "Pinned tool names allowed to inject this credential.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "credential": {
            "description": "The existing caller-owned credential, stored encrypted and never logged.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "expires_at": {
            "description": "The issuer-provided expiry of the captured credential.",
            "format": "date-time",
            "type": "string"
          },
          "parent": {
            "description": "The environment in which the caller holds the existing grant.",
            "type": "string"
          },
          "purpose": {
            "description": "execution, completion, or runtime; runtime handles never enter the guest.",
            "type": "string"
          },
          "session": {
            "description": "The prospective or existing session to bind this handle to.",
            "type": "string"
          },
          "turn": {
            "description": "The turn allowed to use the execution credential.",
            "format": "int64",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "session",
          "turn",
          "credential",
          "expires_at",
          "allowed_tools",
          "purpose"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.CatalogTool": {
        "description": "A tool description embedded in a session catalog, not a named resource.",
        "properties": {
          "description": {
            "description": "The tool description presented to the agent harness.",
            "type": "string"
          },
          "input_schema": {
            "additionalProperties": true,
            "description": "The JSON Schema of the tool's validated input.",
            "type": "object"
          },
          "name": {
            "description": "The tool name in the pinned agent version.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.ClientTool": {
        "description": "A ClientTool is a tool the client runs: the session waits for its result\nin state `AWAITING_CLIENT`.",
        "properties": {
          "timeout": {
            "description": "How long the session waits for the result before the call fails, 1s to\n24h; default 10m.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.CompletionCall": {
        "description": "Completion uses a tool in the pinned version, never a caller-supplied URL.",
        "properties": {
          "arguments": {
            "additionalProperties": true,
            "description": "Immutable literal tool input, excluding credentials and mapped result fields.",
            "type": "object"
          },
          "result_fields": {
            "additionalProperties": {
              "$ref": "#/components/schemas/sylphx.agents.v1.ResultField"
            },
            "description": "Destination argument names mapped to runtime-produced result selectors.",
            "type": "object"
          },
          "tool": {
            "description": "The authorized tool name in the pinned agent version.",
            "type": "string"
          }
        },
        "required": [
          "tool"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.ContentPart": {
        "description": "A ContentPart is one piece of a message.",
        "properties": {
          "file": {
            "$ref": "#/components/schemas/sylphx.agents.v1.FileRef",
            "description": "A file, by Sylphx Data object URL or an https URL."
          },
          "text": {
            "description": "Text.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.CreateAgentRequest": {
        "description": "The request of CreateAgent.",
        "properties": {
          "agent": {
            "$ref": "#/components/schemas/sylphx.agents.v1.Agent",
            "description": "The agent to create; only caller-writable fields are read."
          },
          "agent_id": {
            "description": "The agent id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/Agent"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "agent"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.CreateAgentSessionRequest": {
        "description": "The request of CreateAgentSession.",
        "properties": {
          "agent_session": {
            "$ref": "#/components/schemas/sylphx.agents.v1.AgentSession",
            "description": "The session to create; only caller-writable fields are read."
          },
          "agent_session_id": {
            "description": "The session id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentSession"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "agent_session"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.CreateMemoryRequest": {
        "description": "The request of CreateMemory.",
        "properties": {
          "memory": {
            "$ref": "#/components/schemas/sylphx.agents.v1.Memory",
            "description": "The memory to create; only caller-writable fields are read."
          },
          "memory_id": {
            "description": "The memory id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The memory store to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/Memory"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "memory"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.CreateMemoryStoreRequest": {
        "description": "The request of CreateMemoryStore.",
        "properties": {
          "memory_store": {
            "$ref": "#/components/schemas/sylphx.agents.v1.MemoryStore",
            "description": "The memory store to create; only caller-writable fields are read."
          },
          "memory_store_id": {
            "description": "The memory store id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/MemoryStore"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "memory_store"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.CredentialBinding": {
        "description": "A CredentialBinding names where the gateway takes a credential from. The\nvalue is resolved at egress only; the model, the event log and traces see\nthe binding, never the value.",
        "properties": {
          "connection": {
            "description": "A Kernel Connection (a third-party OAuth installation), by name.",
            "type": "string",
            "x-sylphx-resource-reference": "connections.sylphx.com/Connection"
          },
          "end_user_provider": {
            "description": "The end user's own grant in Sylphx Auth's agent token vault, by\nprovider id; the session's end user must hold it.",
            "type": "string"
          },
          "handle": {
            "description": "An opaque credential handle issued for this session, resolved only at\negress. This is never a credential value.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "placement": {
            "description": "How the value is sent: `bearer` (default), `header:<Name>` or\n`query:<name>`.",
            "type": "string"
          },
          "secret": {
            "description": "A Kernel Secret of this environment, by name.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/Secret"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.CredentialHandle": {
        "description": "An opaque session-bound reference to a captured grant, not a CRUD resource.",
        "properties": {
          "expires_at": {
            "description": "The issuer-provided expiry of the captured credential.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "generation": {
            "description": "The current fencing generation of the captured handle.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "handle": {
            "description": "The opaque handle; it never reveals the captured credential.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-sensitive": true
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.DecideAgentSessionApprovalRequest": {
        "description": "The request of DecideAgentSessionApproval.",
        "properties": {
          "call_id": {
            "description": "The waiting ToolCall's `id`.",
            "type": "string"
          },
          "decision": {
            "$ref": "#/components/schemas/sylphx.agents.v1.ApprovalDecision",
            "description": "The answer."
          },
          "name": {
            "description": "The name of the session.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentSession"
          },
          "reason": {
            "description": "Why, at most 500 characters; the agent reads it with a rejection.",
            "type": "string"
          },
          "remember": {
            "description": "Also allow later calls of the same tool in this session without asking\n(\"always allow\"); only with APPROVE.",
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "call_id",
          "decision"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.DeleteAgentRequest": {
        "description": "The request of DeleteAgent.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the agent does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete the agent's sessions; without it, an agent with sessions\nis refused with `INVALID_STATE`.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the agent to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/Agent"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.DeleteAgentSessionRequest": {
        "description": "The request of DeleteAgentSession.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the session does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Interrupt a running turn and delete; without it, a running session is\nrefused with `INVALID_STATE`.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the session to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentSession"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.DeleteMemoryRequest": {
        "description": "The request of DeleteMemory.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the memory does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the memory to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/Memory"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.DeleteMemoryStoreRequest": {
        "description": "The request of DeleteMemoryStore.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the memory store does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete the store's memories; without it, a store with memories is\nrefused with `INVALID_STATE`.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the memory store to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/MemoryStore"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.EnvironmentSpec": {
        "description": "EnvironmentSpec describes a session's Sandboxes environment. The pinned\nAgentVersion may provide a default. RunAgent overlays selected fields using\nRunAgentRequest.environment_mask; an explicit environment on\nCreateAgentSession replaces the default instead.",
        "properties": {
          "budget": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseBudget",
            "description": "The lease's CPU and cost ceiling, separate from model and tool spend."
          },
          "egress": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseNetwork",
            "description": "The lease's outbound policy, using the Sandboxes network contract."
          },
          "idle_standby": {
            "description": "Put the environment in standby after this long idle, 1m to 24h; default\n10m.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "repo": {
            "$ref": "#/components/schemas/sylphx.agents.v1.RepositorySpec",
            "description": "The repository to prepare inside the fresh lease, if any."
          },
          "shape": {
            "description": "A Sylphx Sandboxes shape; empty gives sessions no environment.",
            "type": "string"
          },
          "template": {
            "description": "The Sandboxes image: `template:<name>` or an artifact image by digest,\npassed unchanged to the lease's `image` field.",
            "type": "string"
          },
          "ttl": {
            "description": "The lease's maximum wall time, passed to Sandboxes as `ttl`. The lease\nis released when the session ends even if this bound has not been reached.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.ErrorEvent": {
        "description": "ErrorEvent is a step or harness failure, without credential values.",
        "properties": {
          "kind": {
            "description": "The registry error code or harness error kind.",
            "readOnly": true,
            "type": "string"
          },
          "message": {
            "description": "A safe error description.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.FileChange": {
        "description": "FileChange is a file changed by a step's harness.",
        "properties": {
          "added": {
            "description": "Lines added, when reported by the harness.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "change": {
            "description": "`added`, `modified`, `deleted`, `renamed` or `copied`.",
            "readOnly": true,
            "type": "string"
          },
          "old_path": {
            "description": "The previous path, for a rename or copy.",
            "readOnly": true,
            "type": "string"
          },
          "path": {
            "description": "The path relative to the session's repository root.",
            "readOnly": true,
            "type": "string"
          },
          "removed": {
            "description": "Lines removed, when reported by the harness.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "source": {
            "description": "`edit` for an incremental edit or `final` for the turn's final diff.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.FileRef": {
        "description": "A FileRef names a file attached to a message.",
        "properties": {
          "filename": {
            "description": "Its display name.",
            "type": "string"
          },
          "media_type": {
            "description": "Its media type, for example `image/png`.",
            "type": "string"
          },
          "uri": {
            "description": "Where the file is.",
            "type": "string"
          }
        },
        "required": [
          "uri"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.FunctionTool": {
        "description": "A FunctionTool is a tool whose logic is the app's own server code.",
        "properties": {
          "timeout": {
            "description": "One call's deadline, 1s to 15m; default 60s.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "uri": {
            "description": "The HTTPS endpoint the gateway calls, a Hosting route or a verified\nNetwork Domain of this project.",
            "type": "string"
          }
        },
        "required": [
          "uri"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.GetAgentRequest": {
        "description": "The request of GetAgent.",
        "properties": {
          "name": {
            "description": "The name of the agent to get.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/Agent"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.GetAgentSessionRequest": {
        "description": "The request of GetAgentSession.",
        "properties": {
          "name": {
            "description": "The name of the session to get.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentSession"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.GetAgentVersionRequest": {
        "description": "The request of GetAgentVersion.",
        "properties": {
          "name": {
            "description": "The name of the agent version to get.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentVersion"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.GetMemoryRequest": {
        "description": "The request of GetMemory.",
        "properties": {
          "name": {
            "description": "The name of the memory to get.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/Memory"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.GetMemoryStoreRequest": {
        "description": "The request of GetMemoryStore.",
        "properties": {
          "name": {
            "description": "The name of the memory store to get.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/MemoryStore"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.GetSessionEventRequest": {
        "description": "The request of GetSessionEvent.",
        "properties": {
          "name": {
            "description": "The name of the session event to get.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/SessionEvent"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.HttpTool": {
        "description": "An HttpTool is an HTTP API the gateway calls on the agent's behalf.",
        "properties": {
          "credential": {
            "$ref": "#/components/schemas/sylphx.agents.v1.CredentialBinding",
            "description": "The credential the gateway injects at egress; the model never sees it."
          },
          "openapi": {
            "additionalProperties": true,
            "description": "An OpenAPI 3 document, at most 1 MiB of JSON.",
            "type": "object"
          },
          "openapi_uri": {
            "description": "An HTTPS URL of an OpenAPI 3 document.",
            "type": "string"
          },
          "operation_id": {
            "description": "The operation the tool calls; empty exposes every operation as its own\ntool named `<tool>_<operationId>`.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.InterruptAgentSessionRequest": {
        "description": "The request of InterruptAgentSession.",
        "properties": {
          "name": {
            "description": "The name of the session.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentSession"
          },
          "reason": {
            "description": "Why, recorded on the status event; at most 500 characters.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.InvokeToolRequest": {
        "description": "The request to execute one pinned tool through the session gateway.",
        "properties": {
          "arguments": {
            "additionalProperties": true,
            "description": "The tool input, validated against its pinned input schema.",
            "type": "object"
          },
          "name": {
            "description": "The name of the session whose pinned tools are used.",
            "type": "string"
          },
          "op_id": {
            "description": "The stable operation identifier, reused for idempotent tool-call retries.",
            "type": "string"
          },
          "tool": {
            "description": "The tool name in the session's pinned agent version.",
            "type": "string"
          },
          "turn": {
            "description": "The live turn whose execution capability authorizes the call.",
            "format": "int64",
            "type": "string"
          }
        },
        "required": [
          "name",
          "turn",
          "tool",
          "arguments",
          "op_id"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.ListAgentSessionsRequest": {
        "description": "The request of ListAgentSessions.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, limited to `agent`, `end_user` and `state`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentSession"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.ListAgentSessionsResponse": {
        "description": "The response of ListAgentSessions.",
        "properties": {
          "agent_sessions": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.AgentSession"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.ListAgentVersionsRequest": {
        "description": "The request of ListAgentVersions.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, limited to `version_number`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The agent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentVersion"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.ListAgentVersionsResponse": {
        "description": "The response of ListAgentVersions.",
        "properties": {
          "agent_versions": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.AgentVersion"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.ListAgentsRequest": {
        "description": "The request of ListAgents.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/Agent"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.ListAgentsResponse": {
        "description": "The response of ListAgents.",
        "properties": {
          "agents": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.Agent"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.ListMemoriesRequest": {
        "description": "The request of ListMemories.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, limited to `end_user` and `agent`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The memory store to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/Memory"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.ListMemoriesResponse": {
        "description": "The response of ListMemories.",
        "properties": {
          "memories": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.Memory"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.ListMemoryStoresRequest": {
        "description": "The request of ListMemoryStores.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/MemoryStore"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.ListMemoryStoresResponse": {
        "description": "The response of ListMemoryStores.",
        "properties": {
          "memory_stores": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.MemoryStore"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.ListSessionEventsRequest": {
        "description": "The request of ListSessionEvents.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, limited to `type` and `sequence`; for example\n`sequence > 42`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The session to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/SessionEvent"
          },
          "wait": {
            "description": "When no event matches the filter, wait up to this long for one, at most\n60s; unset answers at once.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.ListSessionEventsResponse": {
        "description": "The response of ListSessionEvents.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "session_events": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.SessionEvent"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.McpServer": {
        "description": "An McpServer is a remote MCP server whose tools the agent may call.",
        "properties": {
          "allowed_tools": {
            "description": "Only these of its tools; empty allows every tool it lists.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "credential": {
            "$ref": "#/components/schemas/sylphx.agents.v1.CredentialBinding",
            "description": "The credential the gateway presents to the server."
          },
          "label": {
            "description": "The label its tools are prefixed with, unique within the agent.",
            "type": "string"
          },
          "uri": {
            "description": "The server's Streamable HTTP endpoint.",
            "type": "string"
          }
        },
        "required": [
          "label",
          "uri"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.Memory": {
        "description": "A Memory is one long-term memory record: a fact with its provenance.",
        "properties": {
          "agent": {
            "description": "The agent it belongs to, for a store scoped to agents.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "agents.sylphx.com/Agent"
          },
          "content": {
            "description": "The memory, at most 16 KiB of text.",
            "type": "string"
          },
          "create_time": {
            "description": "When it was written.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "end_user": {
            "description": "The end user it is about, for a store scoped to end users.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/memory_stores/{memory_store}/memories/{memory}`.",
            "type": "string"
          },
          "provenance": {
            "$ref": "#/components/schemas/sylphx.agents.v1.MemoryProvenance",
            "description": "Where it came from.",
            "readOnly": true
          },
          "uid": {
            "description": "`mem_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "update_time": {
            "description": "When it was last changed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.MemoryMatch": {
        "description": "A MemoryMatch is one recalled memory and how well it matched.",
        "properties": {
          "memory": {
            "$ref": "#/components/schemas/sylphx.agents.v1.Memory",
            "description": "The memory."
          },
          "score": {
            "description": "The relevance, 0 to 1.",
            "type": "number"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.MemoryProvenance": {
        "description": "MemoryProvenance records where a memory came from.",
        "properties": {
          "event": {
            "description": "The event it was learned from, when an agent wrote it.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/SessionEvent"
          },
          "principal": {
            "description": "The principal that wrote it, when a caller did.",
            "readOnly": true,
            "type": "string"
          },
          "session": {
            "description": "The session it was learned in, when an agent wrote it.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentSession"
          },
          "source": {
            "$ref": "#/components/schemas/sylphx.agents.v1.MemorySource",
            "description": "Who wrote it.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.MemoryScope": {
        "description": "MemoryScope is whose memories a store keeps apart.",
        "enum": [
          "project",
          "agent",
          "end_user"
        ],
        "type": "string"
      },
      "sylphx.agents.v1.MemorySource": {
        "description": "MemorySource is who wrote a memory.",
        "enum": [
          "agent",
          "api",
          "import"
        ],
        "type": "string"
      },
      "sylphx.agents.v1.MemoryStore": {
        "description": "A MemoryStore holds long-term memory records with provenance, recalled by\nhybrid full-text and vector search. Agents name the stores they use; a\nstore may be shared by many agents.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/memory_stores/{memory_store}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.agents.v1.MemoryStoreSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.agents.v1.MemoryStoreStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`mst_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.MemoryStoreSpec": {
        "description": "MemoryStoreSpec is the caller-writable state of a MemoryStore.",
        "properties": {
          "agent_writes": {
            "description": "Whether agents write memories themselves after each turn; otherwise\nonly callers write them.",
            "type": "boolean"
          },
          "description": {
            "description": "What the store is for, shown to agents; at most 1024 characters.",
            "type": "string"
          },
          "retention": {
            "description": "Memories older than this since their last update are deleted, 1d to\n3650d; unset keeps them until deleted.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "scope": {
            "$ref": "#/components/schemas/sylphx.agents.v1.MemoryScope",
            "description": "Whose memories are kept apart."
          }
        },
        "required": [
          "scope"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.MemoryStoreStatus": {
        "description": "MemoryStoreStatus is the observed state of a MemoryStore.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "memory_count": {
            "description": "The number of memories.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "stored_bytes": {
            "description": "Bytes stored, content and index together; the billed quantity.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.Message": {
        "description": "A Message is text and files from a user or the agent.",
        "properties": {
          "parts": {
            "description": "The content, in order; 1 to 64 parts.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.ContentPart"
            },
            "type": "array"
          }
        },
        "required": [
          "parts"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.PolicyDecision": {
        "description": "PolicyDecision is what the tool policy does with a call.",
        "enum": [
          "allow",
          "deny",
          "ask"
        ],
        "type": "string"
      },
      "sylphx.agents.v1.ProfileMount": {
        "description": "ProfileMount attaches a platform Profile by name, never its sign-in values.",
        "properties": {
          "mode": {
            "description": "`read_only` (default) or `write_back`. Only a write_back grant saves\nchanges at session end while its lease still answers; empty is read_only.",
            "type": "string"
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/profiles/{profile}`.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.RenewalCall": {
        "description": "A pinned tool called periodically while the accepted task owns its grant.",
        "properties": {
          "arguments": {
            "additionalProperties": true,
            "description": "Immutable literal renewal-tool input, with credential injection by the gateway.",
            "type": "object"
          },
          "cancel_field": {
            "description": "JSON pointers into the tool response; no domain-specific field names.",
            "type": "string"
          },
          "credential_expiries": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Matching aliases to issuer-returned RFC3339 expiry response pointers.",
            "type": "object"
          },
          "credential_updates": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Credential binding alias to a response JSON pointer for its replacement.",
            "type": "object"
          },
          "idempotency_argument": {
            "description": "Top-level argument receiving a stable per-tick runtime idempotency key.\nOmit this argument from literal input; retries reuse it, later ticks change it.",
            "type": "string"
          },
          "interval": {
            "description": "Positive interval, from five seconds to five minutes.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "reason_field": {
            "description": "A response JSON pointer selecting the cancellation reason.",
            "type": "string"
          },
          "tool": {
            "description": "The authorized renewal tool name in the pinned agent version.",
            "type": "string"
          }
        },
        "required": [
          "tool",
          "interval"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.RepositorySpec": {
        "description": "RepositorySpec identifies the source to prepare in a session's lease.",
        "properties": {
          "revision": {
            "description": "The commit or ref to check out; empty uses the repository's default branch.",
            "type": "string"
          },
          "uri": {
            "description": "The repository URI. Access uses the session's bound credential handles.",
            "type": "string"
          }
        },
        "required": [
          "uri"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.ResultField": {
        "description": "Runtime-produced fields mapped into an authorized completion tool call.",
        "enum": [
          "text",
          "done",
          "next",
          "where",
          "outcome"
        ],
        "type": "string"
      },
      "sylphx.agents.v1.RevokeCredentialRequest": {
        "description": "The request to revoke a captured credential handle.",
        "properties": {
          "handle": {
            "description": "The opaque handle to revoke; repeated revocation is harmless.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "parent": {
            "description": "The environment that owns the captured handle.",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "handle"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.RotateCredentialRequest": {
        "description": "The request to rotate a captured credential without changing its handle.",
        "properties": {
          "credential": {
            "description": "The replacement issuer-provided credential, stored encrypted.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "expires_at": {
            "description": "The issuer-provided expiry of the replacement credential.",
            "format": "date-time",
            "type": "string"
          },
          "generation": {
            "description": "The current handle generation; stale rotations are refused.",
            "format": "int64",
            "type": "string"
          },
          "handle": {
            "description": "The opaque handle whose captured credential is being replaced.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "parent": {
            "description": "The environment that owns the captured handle.",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "handle",
          "generation",
          "credential",
          "expires_at"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.RunAgentRequest": {
        "description": "Immutable task-attempt input; the caller pins its own task/profile context.",
        "properties": {
          "agent_session_id": {
            "description": "The stable session identifier; reusing it for another attempt is refused.",
            "type": "string"
          },
          "agent_version": {
            "description": "The immutable agent version pinned for this task attempt.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentVersion"
          },
          "completion": {
            "$ref": "#/components/schemas/sylphx.agents.v1.CompletionCall",
            "description": "The pinned tool call used by the runtime to deliver the terminal result."
          },
          "credentials": {
            "additionalProperties": {
              "$ref": "#/components/schemas/sylphx.agents.v1.CredentialBinding"
            },
            "description": "Captured credential bindings by alias; credentials never enter context.",
            "type": "object"
          },
          "environment": {
            "$ref": "#/components/schemas/sylphx.agents.v1.EnvironmentSpec",
            "description": "Optional overrides of the environment in the pinned AgentVersion's frozen\nspec, never the Agent's current head. Omitted or empty with no mask keeps\nthat default unchanged. Only selected fields are overlaid; see\nenvironment_mask. The effective environment must have a supported shape,\nfinite positive TTL and valid repository, network and budget before admission."
          },
          "environment_mask": {
            "description": "Fields of environment to overlay, relative to EnvironmentSpec, using proto\nsnake_case paths such as ttl, repo.uri, repo.revision,\negress.allowed_domains and budget.max_cost_micros. The wire value is a\ncomma-separated string; SDK property naming does not change these paths.\nOmitted or empty infers populated serialized leaf fields recursively,\npreserving unselected siblings from the pinned version. Proto defaults\n(including empty lists) need an explicit mask to reset a selected field.\nSelected lists replace, rather than append to, the inherited list.\nThe sole path \"*\" replaces the whole environment, resetting unpopulated\nfields. Unknown, invalid and output-only paths are rejected, as is a\nnonempty mask without environment. Effective validation also applies to\nexplicit resets and whole-environment replacement.",
            "type": "string"
          },
          "message": {
            "$ref": "#/components/schemas/sylphx.agents.v1.Message",
            "description": "The initial task message appended atomically with session acceptance."
          },
          "name": {
            "description": "The name of the agent to run under the caller's environment grant.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/Agent"
          },
          "profiles": {
            "description": "Granted profile mounts for the fresh session lease.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.ProfileMount"
            },
            "type": "array"
          },
          "renewal": {
            "$ref": "#/components/schemas/sylphx.agents.v1.RenewalCall",
            "description": "Optional pinned grant-renewal call, owned by the runtime after acceptance."
          },
          "runtime_credential_handle": {
            "description": "Same-session handle to a caller-owned scoped Access credential. Runtime only,\nnever installed in the guest or sent to the model.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "task_ref": {
            "description": "Caller-owned opaque reference, not interpreted by Agents.",
            "type": "string"
          },
          "workspace_knowledge": {
            "additionalProperties": true,
            "description": "Opaque, claim-pinned workspace knowledge, including its rendered instruction.",
            "type": "object"
          }
        },
        "required": [
          "name",
          "agent_version",
          "agent_session_id",
          "message",
          "completion",
          "runtime_credential_handle"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.RunAgentResponse": {
        "description": "Durable acceptance, not task completion or sandbox readiness.",
        "properties": {
          "cleanup": {
            "description": "Lease-cleanup progress; released requires terminal lease evidence.",
            "readOnly": true,
            "type": "string"
          },
          "delivery": {
            "description": "Result-delivery progress, independent of lease cleanup.",
            "readOnly": true,
            "type": "string"
          },
          "initial_event": {
            "$ref": "#/components/schemas/sylphx.agents.v1.SessionEvent",
            "description": "The initial message event committed with the session and pending turn.",
            "readOnly": true
          },
          "session": {
            "$ref": "#/components/schemas/sylphx.agents.v1.AgentSession",
            "description": "The durably accepted session; acceptance is not task completion.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.SearchMemoriesRequest": {
        "description": "The request of SearchMemories.",
        "properties": {
          "agent": {
            "description": "Only memories of this agent.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/Agent"
          },
          "end_user": {
            "description": "Only memories about this end user.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          },
          "page_size": {
            "description": "At most this many; default 10, clamped to 100.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The memory store to search.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/Memory"
          },
          "query": {
            "description": "What to recall, 1 to 2000 characters.",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "query"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.SearchMemoriesResponse": {
        "description": "The response of SearchMemories.",
        "properties": {
          "matches": {
            "description": "The matches, best first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.MemoryMatch"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.SendAgentSessionMessageRequest": {
        "description": "The request of SendAgentSessionMessage.",
        "properties": {
          "message": {
            "$ref": "#/components/schemas/sylphx.agents.v1.Message",
            "description": "The message, 1 to 64 parts."
          },
          "name": {
            "description": "The name of the session.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentSession"
          }
        },
        "required": [
          "name",
          "message"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.SessionEvent": {
        "description": "A SessionEvent is one entry of a session's append-only log: a user\nmessage, model output, a tool call or result, an approval, or a status\nchange. Events are never changed or reordered; `sequence` is their order.",
        "properties": {
          "approval": {
            "$ref": "#/components/schemas/sylphx.agents.v1.Approval",
            "description": "For APPROVAL_REQUESTED and APPROVAL_DECIDED."
          },
          "create_time": {
            "description": "When it was appended.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/sylphx.agents.v1.ErrorEvent",
            "description": "For ERROR."
          },
          "file_change": {
            "$ref": "#/components/schemas/sylphx.agents.v1.FileChange",
            "description": "For FILE_CHANGE."
          },
          "message": {
            "$ref": "#/components/schemas/sylphx.agents.v1.Message",
            "description": "For USER_MESSAGE, STEER and AGENT_MESSAGE."
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/agent_sessions/{agent_session}/session_events/{session_event}`.",
            "type": "string"
          },
          "response": {
            "$ref": "#/components/schemas/sylphx.agents.v1.TurnResult",
            "description": "For RESPONSE: the completed turn's answer and usage."
          },
          "sequence": {
            "description": "The position in the session's log, from 1, with no gaps.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "status_change": {
            "$ref": "#/components/schemas/sylphx.agents.v1.StatusChange",
            "description": "For STATUS."
          },
          "step": {
            "description": "The step within the turn, from 1, assigned by the runtime; 0 for an\nevent that is not a step.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "thought": {
            "$ref": "#/components/schemas/sylphx.agents.v1.Message",
            "description": "For THOUGHT: a reasoning summary, never private model reasoning."
          },
          "tool_call": {
            "$ref": "#/components/schemas/sylphx.agents.v1.ToolCall",
            "description": "For TOOL_CALL."
          },
          "tool_result": {
            "$ref": "#/components/schemas/sylphx.agents.v1.ToolResult",
            "description": "For TOOL_RESULT."
          },
          "turn": {
            "description": "The turn it belongs to, from 1; 0 for an event outside a turn.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/sylphx.agents.v1.SessionEventType",
            "description": "What the event is.",
            "readOnly": true
          },
          "uid": {
            "description": "`sevt_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.SessionEventType": {
        "description": "SessionEventType is what a session event records.",
        "enum": [
          "user_message",
          "steer",
          "agent_message",
          "tool_call",
          "tool_result",
          "approval_requested",
          "approval_decided",
          "status",
          "compaction",
          "thought",
          "file_change",
          "response",
          "error"
        ],
        "type": "string"
      },
      "sylphx.agents.v1.SessionState": {
        "description": "SessionState is where a session is.",
        "enum": [
          "idle",
          "running",
          "awaiting_approval",
          "awaiting_client",
          "failed"
        ],
        "type": "string"
      },
      "sylphx.agents.v1.SessionUsage": {
        "description": "SessionUsage is what a session has used. Model tokens are on the Sylphx AI\nmeter; this is the Agents part.",
        "properties": {
          "active_turn_duration": {
            "description": "Time turns were active.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "readOnly": true,
            "type": "string"
          },
          "gateway_calls": {
            "description": "Tool calls made through the gateway.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "spend_micros": {
            "description": "Spend so far in micro-USD, models and tools together.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.Skill": {
        "description": "A Skill is an instruction pack the agent loads when its description\nmatches the task.",
        "properties": {
          "description": {
            "description": "When to use it, shown to the model; at most 1024 characters.",
            "type": "string"
          },
          "instructions": {
            "description": "The instructions it loads, at most 256 KiB.",
            "type": "string"
          },
          "name": {
            "description": "The skill's name, unique within the agent.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "description",
          "instructions"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.StatusChange": {
        "description": "A StatusChange is the session moving to a new state.",
        "properties": {
          "reason": {
            "description": "Why, for FAILED and INTERRUPTED: a registry error code and message.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.agents.v1.SessionState",
            "description": "The state after the change.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.SteerAgentSessionRequest": {
        "description": "The request of SteerAgentSession.",
        "properties": {
          "message": {
            "$ref": "#/components/schemas/sylphx.agents.v1.Message",
            "description": "The message, 1 to 64 parts."
          },
          "name": {
            "description": "The name of the session.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentSession"
          }
        },
        "required": [
          "name",
          "message"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.SubmitAgentSessionToolResultRequest": {
        "description": "The request of SubmitAgentSessionToolResult.",
        "properties": {
          "call_id": {
            "description": "The waiting client ToolCall's `id`.",
            "type": "string"
          },
          "error": {
            "description": "Whether the call failed; `output` then holds the error.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the session.",
            "type": "string",
            "x-sylphx-resource-reference": "agents.sylphx.com/AgentSession"
          },
          "output": {
            "description": "The result, at most 1 MiB of JSON."
          }
        },
        "required": [
          "name",
          "call_id",
          "output"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.Tool": {
        "description": "A Tool is one tool an agent may call. Every call goes through the tool\ngateway: the policy check, credential injection at egress (the model, the\nevent log and traces see a handle, never the value), the egress guard, and\none usage record and trace span per call.",
        "properties": {
          "app_function": {
            "$ref": "#/components/schemas/sylphx.agents.v1.FunctionTool",
            "description": "The app's own server code: the gateway calls it with a short-lived\nsigned token bound to the session, turn and step."
          },
          "builtin": {
            "$ref": "#/components/schemas/sylphx.agents.v1.BuiltinTool",
            "description": "A platform tool: `shell`, `files`, `browser`, `computer`, `web_fetch`,\n`web_search` or `memory`."
          },
          "client": {
            "$ref": "#/components/schemas/sylphx.agents.v1.ClientTool",
            "description": "Run by the client: the app executes it and returns the result as an\nevent (`:submitToolResult`)."
          },
          "description": {
            "description": "What the tool does, shown to the model; at most 4096 characters.",
            "type": "string"
          },
          "http": {
            "$ref": "#/components/schemas/sylphx.agents.v1.HttpTool",
            "description": "An HTTP API described by OpenAPI."
          },
          "input_schema": {
            "additionalProperties": true,
            "description": "The JSON Schema of the tool's input. Built-in tools carry their own.",
            "type": "object"
          },
          "name": {
            "description": "The name the model calls, unique within the agent.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.ToolCall": {
        "description": "A ToolCall is the agent asking to call a tool. `id` is assigned by the\nruntime; the model's own tool-call id is kept only as `model_call_id`, so\na model that repeats an id never collides two calls.",
        "properties": {
          "client": {
            "description": "Whether the client runs it (a ClientTool).",
            "readOnly": true,
            "type": "boolean"
          },
          "id": {
            "description": "The call's id within the session, `(turn, step)` based.",
            "readOnly": true,
            "type": "string"
          },
          "input": {
            "additionalProperties": true,
            "description": "The input, as the model sent it.",
            "readOnly": true,
            "type": "object"
          },
          "model_call_id": {
            "description": "The model's own id for the call, as sent; never used as a key.",
            "readOnly": true,
            "type": "string"
          },
          "tool": {
            "description": "The tool name.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.ToolCatalogRequest": {
        "description": "The request for the tools available to a session execution capability.",
        "properties": {
          "name": {
            "description": "The name of the session whose pinned tool catalog is requested.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.ToolCatalogResponse": {
        "description": "The tool catalog visible to the authorized session execution capability.",
        "properties": {
          "tools": {
            "description": "The tools in the session's pinned version, with no credential values.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.CatalogTool"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.ToolPolicy": {
        "description": "A ToolPolicy decides each tool call before it runs. A grant is the\nauthorization: the policy asks a person only for a call no existing grant\ncovers. An OAuth scope, a credential bound to the tool, or an earlier\n\"always allow\" is that grant.",
        "properties": {
          "approval_timeout": {
            "description": "How long a call waits for a person's answer before it is denied, 1m to\n7d; default 24h.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "default_decision": {
            "$ref": "#/components/schemas/sylphx.agents.v1.PolicyDecision",
            "description": "The decision for a call no rule matches; default allow."
          },
          "egress_allow_hosts": {
            "description": "Hosts every network call of the agent's tools may reach, beyond the\ntools' own endpoints; `*.example.com` matches subdomains. Private and\ninternal addresses are refused whatever this says.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "rules": {
            "description": "Rules in order; the first match decides. At most 256.",
            "items": {
              "$ref": "#/components/schemas/sylphx.agents.v1.ToolPolicyRule"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.ToolPolicyRule": {
        "description": "A ToolPolicyRule matches tool calls by tool name.",
        "properties": {
          "condition": {
            "description": "A CEL condition over the call's `input`, the session's `end_user` and\n`labels`; the rule matches only when it is true. Empty always matches.",
            "type": "string"
          },
          "decision": {
            "$ref": "#/components/schemas/sylphx.agents.v1.PolicyDecision",
            "description": "The decision."
          },
          "tool": {
            "description": "A tool name, `<mcp label>__<tool>` for an MCP tool; `*` matches any\ncharacters.",
            "type": "string"
          }
        },
        "required": [
          "tool",
          "decision"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.ToolResult": {
        "description": "A ToolResult is the outcome of one tool call.",
        "properties": {
          "call_id": {
            "description": "The ToolCall's `id`.",
            "readOnly": true,
            "type": "string"
          },
          "duration": {
            "description": "How long the call took.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "readOnly": true,
            "type": "string"
          },
          "error": {
            "description": "Whether the call failed; `output` then holds the error.",
            "readOnly": true,
            "type": "boolean"
          },
          "output": {
            "description": "The output.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.TurnResult": {
        "description": "TurnResult is a completed turn's response, usage and duration.",
        "properties": {
          "cost_micros": {
            "description": "The reported cost, in micro-USD.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "duration": {
            "description": "How long the turn ran.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "readOnly": true,
            "type": "string"
          },
          "is_error": {
            "description": "Whether the turn ended with an error.",
            "readOnly": true,
            "type": "boolean"
          },
          "text": {
            "description": "The final response's text.",
            "readOnly": true,
            "type": "string"
          },
          "usage": {
            "$ref": "#/components/schemas/sylphx.agents.v1.TurnTokenUsage",
            "description": "Model token usage reported by the harness.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.TurnTokenUsage": {
        "description": "TurnTokenUsage is the model token usage reported for a completed turn.",
        "properties": {
          "cache_read_tokens": {
            "description": "Input tokens read from the model's cache.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "cache_write_tokens": {
            "description": "Input tokens written to the model's cache.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "input_tokens": {
            "description": "Input tokens.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "output_tokens": {
            "description": "Output tokens.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.agents.v1.UpdateAgentRequest": {
        "description": "The request of UpdateAgent.",
        "properties": {
          "agent": {
            "$ref": "#/components/schemas/sylphx.agents.v1.Agent",
            "description": "The agent to update; `name` identifies it."
          },
          "allow_missing": {
            "description": "Create the agent when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "agent"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.UpdateMemoryRequest": {
        "description": "The request of UpdateMemory.",
        "properties": {
          "memory": {
            "$ref": "#/components/schemas/sylphx.agents.v1.Memory",
            "description": "The memory to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "memory"
        ],
        "type": "object"
      },
      "sylphx.agents.v1.UpdateMemoryStoreRequest": {
        "description": "The request of UpdateMemoryStore.",
        "properties": {
          "allow_missing": {
            "description": "Create the memory store when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "memory_store": {
            "$ref": "#/components/schemas/sylphx.agents.v1.MemoryStore",
            "description": "The memory store to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "memory_store"
        ],
        "type": "object"
      },
      "sylphx.ai.v1.AiModel": {
        "description": "An AI Model is one admitted entry of the Sylphx AI catalog: a model id a\ncaller may name on the inference surface, with its sell prices, limits, and\ndata policy. Only admitted models list (AI-CATALOG-ADMISSION); no\ncapability, contract, connector, or upstream price appears on an entry\n(AI-CATALOG-NO-LEAK). The id is the canonical model id with `/` and `.`\nwritten as `-`, for example `anthropic-claude-opus-5`; `model` carries the\ncanonical id itself.\n\nThe catalog is platform-wide and written only by `sylphx-platform`;\ncustomers read it.",
        "properties": {
          "aliases": {
            "description": "Bare spellings that resolve to this model when unique, for example\n`claude-opus-5`.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "api_surfaces": {
            "description": "Inference encodings the model answers on.",
            "items": {
              "$ref": "#/components/schemas/sylphx.ai.v1.ApiSurface"
            },
            "readOnly": true,
            "type": "array"
          },
          "brand": {
            "description": "The brand, for example `anthropic`.",
            "readOnly": true,
            "type": "string"
          },
          "caching": {
            "$ref": "#/components/schemas/sylphx.ai.v1.ModelCaching",
            "description": "How long a prompt-cache prefix stays warm on this model, and the longest\nretention a request may ask for; unset when no serving lane declares it.",
            "readOnly": true
          },
          "context_window_tokens": {
            "description": "Context window in tokens.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "data_policy": {
            "$ref": "#/components/schemas/sylphx.ai.v1.DataPolicy",
            "description": "How request and response data are retained and used.",
            "readOnly": true
          },
          "input_modalities": {
            "description": "Accepted input modalities, for example text and image.",
            "items": {
              "$ref": "#/components/schemas/sylphx.ai.v1.InputModality"
            },
            "readOnly": true,
            "type": "array"
          },
          "max_output_tokens": {
            "description": "Most output tokens per response.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "modality": {
            "$ref": "#/components/schemas/sylphx.ai.v1.ModelModality",
            "description": "What the model produces.",
            "readOnly": true
          },
          "model": {
            "description": "The canonical model id, `brand/model`, for example\n`anthropic/claude-opus-5`.",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "`ai_models/{ai_model}`.",
            "type": "string"
          },
          "preview": {
            "description": "Whether the model is a preview.",
            "readOnly": true,
            "type": "boolean"
          },
          "price_identity": {
            "description": "The price identity usage events carry, for example `spv3-...`.",
            "readOnly": true,
            "type": "string"
          },
          "prices": {
            "description": "Sell prices per meter and class; the only prices on an entry.",
            "items": {
              "$ref": "#/components/schemas/sylphx.ai.v1.ModelPrice"
            },
            "readOnly": true,
            "type": "array"
          },
          "release_time": {
            "description": "The upstream release date.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`aim_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.ai.v1.ApiSurface": {
        "description": "An inference encoding of the compatibility surface (ai-inference-surface.md\n§5).",
        "enum": [
          "responses",
          "messages",
          "chat_completions",
          "embeddings",
          "images",
          "speech",
          "transcription"
        ],
        "type": "string"
      },
      "sylphx.ai.v1.DataPolicy": {
        "description": "How a model's request and response data are handled.",
        "properties": {
          "response_retention": {
            "description": "Stored responses expire after this long (7 days).",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "readOnly": true,
            "type": "string"
          },
          "retains_prompts": {
            "description": "Whether Sylphx or the upstream retains prompts beyond the request.",
            "readOnly": true,
            "type": "boolean"
          },
          "trains_on_prompts": {
            "description": "Whether the upstream may train on prompts.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.ai.v1.GetAiModelRequest": {
        "description": "The request of GetAiModel.",
        "properties": {
          "name": {
            "description": "The name of the AI model to get.",
            "type": "string",
            "x-sylphx-resource-reference": "ai.sylphx.com/AiModel"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.ai.v1.InputModality": {
        "description": "An input a model accepts.",
        "enum": [
          "text",
          "image",
          "audio",
          "file",
          "video"
        ],
        "type": "string"
      },
      "sylphx.ai.v1.ListAiModelsRequest": {
        "description": "The request of ListAiModels.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.ai.v1.ListAiModelsResponse": {
        "description": "The response of ListAiModels.",
        "properties": {
          "ai_models": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.ai.v1.AiModel"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.ai.v1.ModelCaching": {
        "description": "A model's prompt-cache retention, from its serving lanes' declarations.",
        "properties": {
          "extended_ttl": {
            "description": "The longest retention a request may ask for with\n`prompt_cache_retention: \"24h\"`, for example one hour on a lane whose\nlongest native breakpoint is one hour; zero when no longer retention\nexists. A prefix written at this retention bills at the `cache_write_1h`\nprice.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "readOnly": true,
            "type": "string"
          },
          "ttl": {
            "description": "How long a cached prefix stays warm after its last use with the default\nretention, for example 300 seconds.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.ai.v1.ModelModality": {
        "description": "What a model produces.",
        "enum": [
          "chat",
          "embedding",
          "image",
          "speech",
          "transcription",
          "video",
          "decision"
        ],
        "type": "string"
      },
      "sylphx.ai.v1.ModelPrice": {
        "description": "One sell price of a model.",
        "properties": {
          "currency_code": {
            "description": "ISO 4217 currency.",
            "readOnly": true,
            "type": "string"
          },
          "meter": {
            "description": "The meter, for example `ai.tokens`.",
            "readOnly": true,
            "type": "string"
          },
          "price_class": {
            "description": "The meter dimension class, for example `input`, `cached_input`, `output`,\n`reasoning`, `cache_write` (writing a prompt-cache prefix at the default\nretention), or `cache_write_1h` (writing it at the extended retention).",
            "readOnly": true,
            "type": "string"
          },
          "unit": {
            "description": "The unit the price is per, for example `1M tokens` or `image`.",
            "readOnly": true,
            "type": "string"
          },
          "unit_price": {
            "description": "The price as a decimal string, for example `1.2`; never a float.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.artifacts.v1.Artifact": {
        "description": "An Artifact is one immutable content object addressed by digest: an\nimage, or evidence about one (an SBOM, a provenance attestation, a\nsignature) that names it as its subject.",
        "properties": {
          "builder": {
            "description": "The builder identity (a SPIFFE id) that produced it.",
            "readOnly": true,
            "type": "string"
          },
          "digest": {
            "description": "The algorithm-qualified digest of the stored bytes, for example\n`sha256:4f1c…`.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.artifacts.v1.ArtifactKind",
            "description": "What the Artifact is.",
            "x-sylphx-immutable": true
          },
          "legal_hold": {
            "description": "A legal hold is active; Delete fails.",
            "readOnly": true,
            "type": "boolean"
          },
          "media_type": {
            "description": "The media type, for example\n`application/vnd.oci.image.manifest.v1+json`.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/artifacts/{artifact}`, where `{artifact}`\nis the digest with `-` for `:`, for example `sha256-4f1c…`.",
            "type": "string"
          },
          "provenance": {
            "description": "The newest provenance attestation whose subject is this Artifact.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "artifacts.sylphx.com/Artifact"
          },
          "reference": {
            "description": "The OCI reference by digest to pull, for example\n`registry.sylphx.com/<project>@sha256:4f1c…`.",
            "readOnly": true,
            "type": "string"
          },
          "regions": {
            "description": "The regions the bytes are replicated to.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "retention": {
            "$ref": "#/components/schemas/sylphx.artifacts.v1.RetentionClass",
            "description": "How long the Artifact is kept."
          },
          "sbom": {
            "description": "The newest SBOM whose subject is this Artifact.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "artifacts.sylphx.com/Artifact"
          },
          "size_bytes": {
            "description": "The size of the stored bytes.",
            "format": "int64",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "source_digests": {
            "description": "Digests of the sources and inputs that produced it.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "subject": {
            "description": "The Artifact this one describes, for an SBOM, provenance, or signature.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "artifacts.sylphx.com/Artifact"
          },
          "uid": {
            "description": "`art_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          },
          "verification_state": {
            "$ref": "#/components/schemas/sylphx.artifacts.v1.VerificationState",
            "description": "Whether the signature and provenance verified. Evidence, never\nidentity: a failure does not change the digest.",
            "readOnly": true
          },
          "verify_time": {
            "description": "When verification last ran.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "digest",
          "kind",
          "media_type",
          "size_bytes"
        ],
        "type": "object"
      },
      "sylphx.artifacts.v1.ArtifactKind": {
        "description": "ArtifactKind is what an Artifact is.",
        "enum": [
          "image",
          "sbom",
          "provenance",
          "signature",
          "bundle"
        ],
        "type": "string"
      },
      "sylphx.artifacts.v1.CreateArtifactRequest": {
        "description": "The request of CreateArtifact.",
        "properties": {
          "artifact": {
            "$ref": "#/components/schemas/sylphx.artifacts.v1.Artifact",
            "description": "The artifact to create; only spec and caller-writable metadata are read."
          },
          "artifact_id": {
            "description": "The id of the new artifact, the digest with `-` for `:`; the server derives it from `digest` when empty; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The project to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "artifacts.sylphx.com/Artifact"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "artifact"
        ],
        "type": "object"
      },
      "sylphx.artifacts.v1.DeleteArtifactRequest": {
        "description": "The request of DeleteArtifact.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the artifact to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "artifacts.sylphx.com/Artifact"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.artifacts.v1.GetArtifactRequest": {
        "description": "The request of GetArtifact.",
        "properties": {
          "name": {
            "description": "The name of the artifact to get.",
            "type": "string",
            "x-sylphx-resource-reference": "artifacts.sylphx.com/Artifact"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.artifacts.v1.ListArtifactsRequest": {
        "description": "The request of ListArtifacts.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The project to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "artifacts.sylphx.com/Artifact"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.artifacts.v1.ListArtifactsResponse": {
        "description": "The response of ListArtifacts.",
        "properties": {
          "artifacts": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.artifacts.v1.Artifact"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.artifacts.v1.RetentionClass": {
        "description": "RetentionClass is how long an Artifact is kept.",
        "enum": [
          "standard",
          "referenced"
        ],
        "type": "string"
      },
      "sylphx.artifacts.v1.VerificationState": {
        "description": "VerificationState is the result of verifying an Artifact.",
        "enum": [
          "unverified",
          "pending",
          "verified",
          "failed"
        ],
        "type": "string"
      },
      "sylphx.assets.v1.ApproveVariantRequest": {
        "description": "The request of ApproveVariant.",
        "properties": {
          "content_hash": {
            "description": "The content hash of the variant, 64 lowercase hex characters.",
            "type": "string"
          },
          "name": {
            "description": "The name of the asset.",
            "type": "string",
            "x-sylphx-resource-reference": "assets.sylphx.com/Asset"
          }
        },
        "required": [
          "name",
          "content_hash"
        ],
        "type": "object"
      },
      "sylphx.assets.v1.Asset": {
        "description": "An Asset is one declared asset and its generated variants. Its id is the\n16-hex logical key of the recipe, so the same recipe is always the same\nAsset. There is no create, update or delete: the key is immutable, and\n`:generate` writes the record.",
        "properties": {
          "canonical": {
            "description": "The exact text the key is the hash of.",
            "readOnly": true,
            "type": "string"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "create_time": {
            "description": "When the asset was first generated.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "key": {
            "description": "The logical key: 16 lowercase hex characters computed from the recipe.",
            "readOnly": true,
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.assets.v1.AssetKind",
            "description": "What kind of asset this is.",
            "readOnly": true
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/assets/{asset}`, where `{asset}`\nis the 16-hex logical key.",
            "type": "string"
          },
          "recipe": {
            "$ref": "#/components/schemas/sylphx.assets.v1.AssetRecipe",
            "description": "The recipe the asset was declared with.",
            "readOnly": true
          },
          "seed": {
            "description": "The seed of the asset, a decimal integer as a string.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.assets.v1.AssetState",
            "description": "Where the asset is in its life.",
            "readOnly": true
          },
          "uid": {
            "description": "`ast_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "update_time": {
            "description": "When the asset last changed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "variants": {
            "description": "The stored variants, ordered by slot.",
            "items": {
              "$ref": "#/components/schemas/sylphx.assets.v1.Variant"
            },
            "readOnly": true,
            "type": "array"
          },
          "variants_wanted": {
            "description": "How many variants the recipe asks for.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.assets.v1.AssetKind": {
        "description": "AssetKind is what an asset is.",
        "enum": [
          "image",
          "sfx",
          "music",
          "video",
          "character",
          "voice"
        ],
        "type": "string"
      },
      "sylphx.assets.v1.AssetRecipe": {
        "description": "An AssetRecipe is what the code declares for one asset. The logical key is\nderived from it.",
        "properties": {
          "character_id": {
            "description": "The character this asset shows; only for `ASSET_KIND_CHARACTER`, encoded\nin the canonical text as `id=`.",
            "type": "string"
          },
          "key": {
            "description": "The key the caller computed, 16 lowercase hex characters. When it differs\nfrom the server's, the call is refused with `INVALID_FIELD` and the\nproblem carries the server's canonical text, which catches encoder drift.",
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.assets.v1.AssetKind",
            "description": "What kind of asset to make."
          },
          "locale": {
            "description": "The locale of the asset, a BCP 47 tag; empty for images.",
            "type": "string"
          },
          "params": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Kind-specific parameters in canonical text form, such as `\"2\"`,\n`\"1024x768\"`, `\"true\"` or a 16-hex key. At most 16 pairs; keys are\n`[a-z_]` up to 32 characters, values up to 256 characters.",
            "type": "object"
          },
          "prompt": {
            "description": "What to make, at most 8000 bytes. Empty only for `ASSET_KIND_CHARACTER`.",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "prompt"
        ],
        "type": "object"
      },
      "sylphx.assets.v1.AssetState": {
        "description": "AssetState is where an asset is in its life.",
        "enum": [
          "pending",
          "ready",
          "approved",
          "failed",
          "refused",
          "unsupported"
        ],
        "type": "string"
      },
      "sylphx.assets.v1.AssetSummary": {
        "description": "An AssetSummary is the progress of one asset in a `:generate` call.",
        "properties": {
          "key": {
            "description": "The logical key.",
            "type": "string"
          },
          "name": {
            "description": "The asset's resource name.",
            "type": "string",
            "x-sylphx-resource-reference": "assets.sylphx.com/Asset"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.assets.v1.AssetState",
            "description": "Where the asset is in its life.",
            "readOnly": true
          },
          "variants_ready": {
            "description": "How many variants are stored.",
            "format": "int32",
            "type": "integer"
          },
          "variants_wanted": {
            "description": "How many variants the recipe asks for.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.assets.v1.ExportAssetsRequest": {
        "description": "The request of ExportAssets.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, limited to `kind` and `review_state`; for example\n`kind = ASSET_KIND_IMAGE`. Without a `review_state` term, rejected and\nretired variants are left out.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many items; default 100, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to export from.",
            "type": "string",
            "x-sylphx-resource-reference": "assets.sylphx.com/Asset"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.assets.v1.ExportAssetsResponse": {
        "description": "The response of ExportAssets.",
        "properties": {
          "items": {
            "description": "The page, oldest variant first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.assets.v1.ExportedAsset"
            },
            "type": "array"
          },
          "manifest_digest": {
            "description": "On the last page only: `sha256:` and the hex SHA-256 of the `content_hash`\nof every item the filter matches (one line per item, sorted, each ended\nby a line feed). A client that downloaded every page recomputes it from\nthe items it holds.",
            "type": "string"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.assets.v1.ExportedAsset": {
        "description": "An ExportedAsset is one variant in the flat export manifest. Download the\nbytes from `url` and check them against `content_hash`.",
        "properties": {
          "approved_by": {
            "description": "Who approved the variant; empty until approved.",
            "type": "string"
          },
          "asset_key": {
            "description": "The logical key of the asset the variant belongs to.",
            "type": "string"
          },
          "asset_uid": {
            "description": "The asset's immutable uid.",
            "type": "string"
          },
          "bytes": {
            "description": "The file size in bytes.",
            "format": "int64",
            "type": "string"
          },
          "content_hash": {
            "description": "SHA-256 of the file, 64 lowercase hex characters.",
            "type": "string"
          },
          "ext": {
            "description": "The file extension, without the dot.",
            "type": "string"
          },
          "height": {
            "description": "Pixel height.",
            "format": "int32",
            "type": "integer"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.assets.v1.AssetKind",
            "description": "What the asset is."
          },
          "media_type": {
            "description": "The IANA media type.",
            "type": "string"
          },
          "model": {
            "description": "The recorded model id; informational.",
            "type": "string"
          },
          "review_state": {
            "$ref": "#/components/schemas/sylphx.assets.v1.ReviewState",
            "description": "The human review of the variant.",
            "readOnly": true
          },
          "seed": {
            "description": "The seed, an unsigned decimal string.",
            "type": "string"
          },
          "url": {
            "description": "The public, content-addressed, immutable download URL.",
            "type": "string"
          },
          "width": {
            "description": "Pixel width.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.assets.v1.GenerateAssetsRequest": {
        "description": "The request of GenerateAssets.",
        "properties": {
          "parent": {
            "description": "The environment to generate in.",
            "type": "string",
            "x-sylphx-resource-reference": "assets.sylphx.com/Asset"
          },
          "recipes": {
            "description": "The recipes the code declares; 1 to 1000.",
            "items": {
              "$ref": "#/components/schemas/sylphx.assets.v1.AssetRecipe"
            },
            "type": "array"
          },
          "validate_only": {
            "description": "Validate the recipes and return the counts without writing or\ngenerating anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "recipes"
        ],
        "type": "object"
      },
      "sylphx.assets.v1.GenerateAssetsResponse": {
        "description": "The response of GenerateAssets.",
        "properties": {
          "assets": {
            "description": "One summary per recipe, in the order sent.",
            "items": {
              "$ref": "#/components/schemas/sylphx.assets.v1.AssetSummary"
            },
            "type": "array"
          },
          "created": {
            "description": "Assets new in this call.",
            "format": "int32",
            "type": "integer"
          },
          "failed": {
            "description": "Assets whose slots still fail after their attempts.",
            "format": "int32",
            "type": "integer"
          },
          "generated": {
            "description": "Variants stored by this call.",
            "format": "int32",
            "type": "integer"
          },
          "pending": {
            "description": "Variants still to generate; call again until it is 0.",
            "format": "int32",
            "type": "integer"
          },
          "refused": {
            "description": "Assets refused, for example by moderation.",
            "format": "int32",
            "type": "integer"
          },
          "unchanged": {
            "description": "Assets that already existed with the same key.",
            "format": "int32",
            "type": "integer"
          },
          "unsupported": {
            "description": "Assets of a kind the service does not generate yet.",
            "format": "int32",
            "type": "integer"
          },
          "usage": {
            "$ref": "#/components/schemas/sylphx.assets.v1.Usage",
            "description": "What this call used."
          }
        },
        "type": "object"
      },
      "sylphx.assets.v1.GetAssetRequest": {
        "description": "The request of GetAsset.",
        "properties": {
          "name": {
            "description": "The name of the asset to get.",
            "type": "string",
            "x-sylphx-resource-reference": "assets.sylphx.com/Asset"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.assets.v1.ListAssetsRequest": {
        "description": "The request of ListAssets.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, limited to `kind`, `state`, and `review_state`; for\nexample `kind = ASSET_KIND_IMAGE AND state = ASSET_STATE_READY`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "assets.sylphx.com/Asset"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.assets.v1.ListAssetsResponse": {
        "description": "The response of ListAssets.",
        "properties": {
          "assets": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.assets.v1.Asset"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.assets.v1.LockAssetsRequest": {
        "description": "The request of LockAssets.",
        "properties": {
          "keys": {
            "description": "The logical keys the code declares, 1 to 5000, each 16 lowercase hex\ncharacters. The lock holds only these, so a removed recipe drops out.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "parent": {
            "description": "The environment to read from.",
            "type": "string",
            "x-sylphx-resource-reference": "assets.sylphx.com/Asset"
          }
        },
        "required": [
          "parent",
          "keys"
        ],
        "type": "object"
      },
      "sylphx.assets.v1.LockAssetsResponse": {
        "description": "The response of LockAssets.",
        "properties": {
          "content": {
            "description": "The canonical `assets.lock` text, version 1.",
            "type": "string"
          },
          "entries": {
            "description": "The lock entries of the keys that have a complete record, sorted by key.",
            "items": {
              "$ref": "#/components/schemas/sylphx.assets.v1.LockEntry"
            },
            "type": "array"
          },
          "incomplete": {
            "description": "Keys whose stored variants are fewer than wanted, or whose state is\nneither ready nor approved.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "missing": {
            "description": "Keys with no record.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.assets.v1.LockEntry": {
        "description": "A LockEntry is one asset as it appears in `assets.lock`.",
        "properties": {
          "key": {
            "description": "The logical key.",
            "readOnly": true,
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.assets.v1.AssetKind",
            "description": "What kind of asset this is.",
            "readOnly": true
          },
          "seed": {
            "description": "The seed, a decimal integer as a string.",
            "readOnly": true,
            "type": "string"
          },
          "variants": {
            "description": "The variants, ordered by slot.",
            "items": {
              "$ref": "#/components/schemas/sylphx.assets.v1.LockVariant"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.assets.v1.LockVariant": {
        "description": "A LockVariant is one variant as it appears in `assets.lock`. Its URL is the\nlock's base URL, the content hash, a dot, and the extension.",
        "properties": {
          "approved_by": {
            "description": "The principal that approved the variant; empty when unreviewed.",
            "readOnly": true,
            "type": "string"
          },
          "bytes": {
            "description": "The file's size in bytes.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "content_hash": {
            "description": "The SHA-256 of the file's bytes, 64 lowercase hex characters.",
            "readOnly": true,
            "type": "string"
          },
          "ext": {
            "description": "The file's extension without the dot.",
            "readOnly": true,
            "type": "string"
          },
          "height": {
            "description": "Height in pixels.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "media_type": {
            "description": "The file's media type.",
            "readOnly": true,
            "type": "string"
          },
          "model": {
            "description": "The model that made this variant.",
            "readOnly": true,
            "type": "string"
          },
          "width": {
            "description": "Width in pixels.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.assets.v1.QaCheck": {
        "description": "QaCheck is a QA check.",
        "enum": [
          "format",
          "size",
          "content_credentials",
          "moderation"
        ],
        "type": "string"
      },
      "sylphx.assets.v1.QaFinding": {
        "description": "A QaFinding is one problem QA found in a variant.",
        "properties": {
          "check": {
            "$ref": "#/components/schemas/sylphx.assets.v1.QaCheck",
            "description": "The check that found it.",
            "readOnly": true
          },
          "message": {
            "description": "What is wrong.",
            "readOnly": true,
            "type": "string"
          },
          "severity": {
            "$ref": "#/components/schemas/sylphx.assets.v1.QaSeverity",
            "description": "How serious it is.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.assets.v1.QaSeverity": {
        "description": "QaSeverity is how serious a QA finding is.",
        "enum": [
          "error",
          "warning"
        ],
        "type": "string"
      },
      "sylphx.assets.v1.QaState": {
        "description": "QaState is the QA result of a variant.",
        "enum": [
          "passed",
          "warning",
          "failed"
        ],
        "type": "string"
      },
      "sylphx.assets.v1.RejectVariantRequest": {
        "description": "The request of RejectVariant.",
        "properties": {
          "content_hash": {
            "description": "The content hash of the variant, 64 lowercase hex characters.",
            "type": "string"
          },
          "name": {
            "description": "The name of the asset.",
            "type": "string",
            "x-sylphx-resource-reference": "assets.sylphx.com/Asset"
          }
        },
        "required": [
          "name",
          "content_hash"
        ],
        "type": "object"
      },
      "sylphx.assets.v1.RetireVariantRequest": {
        "description": "The request of RetireVariant.",
        "properties": {
          "content_hash": {
            "description": "The content hash of the variant, 64 lowercase hex characters.",
            "type": "string"
          },
          "name": {
            "description": "The name of the asset.",
            "type": "string",
            "x-sylphx-resource-reference": "assets.sylphx.com/Asset"
          },
          "reason": {
            "description": "Why the variant is retired, at most 500 characters.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "content_hash"
        ],
        "type": "object"
      },
      "sylphx.assets.v1.ReviewState": {
        "description": "ReviewState is the human review of a variant.",
        "enum": [
          "unreviewed",
          "approved",
          "rejected",
          "retired"
        ],
        "type": "string"
      },
      "sylphx.assets.v1.Usage": {
        "description": "Usage is what one call consumed.",
        "properties": {
          "images": {
            "description": "Images stored by this call, the billed quantity.",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.assets.v1.Variant": {
        "description": "A Variant is one stored result for an asset: a file addressed by the hash of\nits bytes. A variant is immutable; only its review changes.",
        "properties": {
          "approved_by": {
            "description": "The principal that approved the variant; empty until it is approved.",
            "readOnly": true,
            "type": "string"
          },
          "bytes": {
            "description": "The file's size in bytes.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "content_credentials": {
            "description": "Whether the file carries content credentials.",
            "readOnly": true,
            "type": "boolean"
          },
          "content_hash": {
            "description": "The SHA-256 of the file's bytes, 64 lowercase hex characters.",
            "readOnly": true,
            "type": "string"
          },
          "create_time": {
            "description": "When the variant was stored.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "ext": {
            "description": "The file's extension without the dot, such as `png`.",
            "readOnly": true,
            "type": "string"
          },
          "findings": {
            "description": "What QA found.",
            "items": {
              "$ref": "#/components/schemas/sylphx.assets.v1.QaFinding"
            },
            "readOnly": true,
            "type": "array"
          },
          "height": {
            "description": "Height in pixels.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "media_type": {
            "description": "The file's media type, such as `image/png`.",
            "readOnly": true,
            "type": "string"
          },
          "model": {
            "description": "The model that made this variant.",
            "readOnly": true,
            "type": "string"
          },
          "qa_state": {
            "$ref": "#/components/schemas/sylphx.assets.v1.QaState",
            "description": "The result of QA on the file.",
            "readOnly": true
          },
          "review_state": {
            "$ref": "#/components/schemas/sylphx.assets.v1.ReviewState",
            "description": "The human review of the variant.",
            "readOnly": true
          },
          "seed": {
            "description": "The seed this variant was made with, a decimal integer as a string.",
            "readOnly": true,
            "type": "string"
          },
          "slot": {
            "description": "The slot the variant fills, from 0.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "url": {
            "description": "The immutable public URL: the project's base URL, then the content hash\nand extension.",
            "readOnly": true,
            "type": "string"
          },
          "width": {
            "description": "Width in pixels.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.AcceptInvitationRequest": {
        "description": "The request of AcceptInvitation.",
        "properties": {
          "end_user": {
            "description": "The accepting end user; its verified email must be the invited address.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          },
          "name": {
            "description": "The name of the invitation.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Invitation"
          }
        },
        "required": [
          "name",
          "end_user"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.AttachEndUserExternalIdRequest": {
        "description": "The request of AttachEndUserExternalId.",
        "properties": {
          "external_id": {
            "description": "The id itself, 1 to 128 printable characters, unique in its namespace\nacross the environment's live users.",
            "type": "string"
          },
          "name": {
            "description": "The name of the end user.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          },
          "namespace": {
            "description": "The customer's namespace for this id: `^[a-z][a-z0-9_]{0,31}$`.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "namespace",
          "external_id"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.AuthConfig": {
        "description": "An Auth Config is the app scope of Sylphx Auth in one environment: which\nsign-in methods the customer's app offers, and its MFA, passkey, lockout,\nsession, CAPTCHA, and Account Portal policy. Every Auth fact is scoped to\none `orgs/{o}/projects/{p}/envs/{e}`; an environment has exactly one Auth\nConfig, id `default`.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/auth_configs/{auth_config}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.auth.v1.AuthConfigSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.auth.v1.AuthConfigStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`acf_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.AuthConfigSpec": {
        "description": "AuthConfigSpec is the caller-writable state of an AuthConfig.",
        "properties": {
          "auth_methods": {
            "description": "Sign-in methods offered to end users.",
            "items": {
              "$ref": "#/components/schemas/sylphx.auth.v1.AuthMethod"
            },
            "type": "array"
          },
          "captcha_secret": {
            "description": "The CAPTCHA verifier secret, held in Sylphx Secrets; unset disables\nCAPTCHA.",
            "type": "string"
          },
          "lockout_enabled": {
            "description": "Progressive lockout by user and IP.",
            "type": "boolean"
          },
          "mail_sending_domain": {
            "description": "The Notify Sending Domain Auth mail is sent from; unset uses the Sylphx\ndefault.",
            "type": "string"
          },
          "mfa_required": {
            "description": "Require a second factor for every end user.",
            "type": "boolean"
          },
          "passkey_policy": {
            "$ref": "#/components/schemas/sylphx.auth.v1.PasskeyPolicy",
            "description": "Passkey policy; unset enforces nothing."
          },
          "portal": {
            "$ref": "#/components/schemas/sylphx.auth.v1.PortalConfig",
            "description": "Account Portal origin and branding."
          },
          "session_policy": {
            "$ref": "#/components/schemas/sylphx.auth.v1.SessionPolicy",
            "description": "Session limits."
          },
          "social_providers": {
            "description": "Social sign-in: one entry per provider Sylphx serves (`google`, `github`,\n`apple`), whether it is on, and whether end users can use it now. An\nupdate changes only the providers it lists; the others keep their state.\nWithout any change Google is on through Sylphx's shared client, when\nSylphx has one. The provider's credentials (the shared client, or your\nown client id and secret) are set with the instance's\n`sign-in-providers:put`: a client secret never passes through this\nresource.",
            "items": {
              "$ref": "#/components/schemas/sylphx.auth.v1.SocialProvider"
            },
            "type": "array"
          },
          "test_email_pattern": {
            "description": "The address pattern of this environment's test accounts (a regular\nexpression over the whole lower-cased address); unset means the\nenvironment has none. It must end in `@` and one of the environment's\nDNS-verified customer-organization domains, escaped\n(`qa\\+[a-z0-9-]{1,40}@example\\.com`), and must not match\n`probe@example.com`; it is stored as `^(?:<local part>)@<domain>$`. An\nend user is a test account (`synthetic_time`) only when it signed up\nwith a matching address and proved that address by a link or code;\nchanging the pattern never makes an existing end user one.",
            "type": "string"
          },
          "user_sync_database": {
            "description": "A Sylphx Data database end users are synced into; unset disables sync.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.AuthConfigStatus": {
        "description": "AuthConfigStatus is the observed state of an AuthConfig.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "issuer_uri": {
            "description": "The OAuth issuer URI; tokens verify from its JWKS.",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "portal_origin": {
            "description": "The Account Portal origin in use.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.AuthMethod": {
        "description": "A sign-in method or factor.",
        "enum": [
          "password",
          "magic_link",
          "email_otp",
          "passkey",
          "totp",
          "oidc",
          "saml",
          "device"
        ],
        "type": "string"
      },
      "sylphx.auth.v1.CreateCustomerOrganizationRequest": {
        "description": "The request of CreateCustomerOrganization.",
        "properties": {
          "customer_organization": {
            "$ref": "#/components/schemas/sylphx.auth.v1.CustomerOrganization",
            "description": "The customer organization to create; only caller-writable fields are read."
          },
          "customer_organization_id": {
            "description": "The customer organization id, the final name segment; the server assigns\none when empty.",
            "type": "string"
          },
          "owner_end_user": {
            "description": "The organization's first owner, an active end user of the same\nenvironment. The organization and its `owner` membership are created in\none transaction, and the call honours `Idempotency-Key`: a retry returns\nthe organization the first call created. Naming a person is explicit app\nauthority: the app vouches for its own tenant. Empty creates an\norganization without members; creating then calling `CreateMembership` is\nnot atomic.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/CustomerOrganization"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "customer_organization"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.CreateEmailDomainRequest": {
        "description": "The request of CreateEmailDomain.",
        "properties": {
          "email_domain": {
            "$ref": "#/components/schemas/sylphx.auth.v1.EmailDomain",
            "description": "The email domain to create; only caller-writable fields are read."
          },
          "email_domain_id": {
            "description": "The email domain id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EmailDomain"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "email_domain"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.CreateEndUserRequest": {
        "description": "The request of CreateEndUser.",
        "properties": {
          "end_user": {
            "$ref": "#/components/schemas/sylphx.auth.v1.EndUser",
            "description": "The end user to create; only caller-writable fields are read."
          },
          "end_user_id": {
            "description": "The end user id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "end_user"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.CreateInvitationRequest": {
        "description": "The request of CreateInvitation.",
        "properties": {
          "invitation": {
            "$ref": "#/components/schemas/sylphx.auth.v1.Invitation",
            "description": "The invitation to create; only caller-writable fields are read."
          },
          "invitation_id": {
            "description": "The invitation id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Invitation"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "invitation"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.CreateMembershipRequest": {
        "description": "The request of CreateMembership.",
        "properties": {
          "membership": {
            "$ref": "#/components/schemas/sylphx.auth.v1.Membership",
            "description": "The membership to create; only caller-writable fields are read."
          },
          "membership_id": {
            "description": "The membership id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Membership"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "membership"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.CreateOauthClientRequest": {
        "description": "The request of CreateOauthClient.",
        "properties": {
          "oauth_client": {
            "$ref": "#/components/schemas/sylphx.auth.v1.OauthClient",
            "description": "The OAuth client to create; only caller-writable fields are read."
          },
          "oauth_client_id": {
            "description": "The OAuth client id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/OauthClient"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "oauth_client"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.CreateOrganizationRoleRequest": {
        "description": "The request of CreateOrganizationRole.",
        "properties": {
          "organization_role": {
            "$ref": "#/components/schemas/sylphx.auth.v1.OrganizationRole",
            "description": "The organization role to create; only caller-writable fields are read."
          },
          "organization_role_id": {
            "description": "The organization role id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/OrganizationRole"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "organization_role"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.CustomerOrganization": {
        "description": "A Customer Organization is a B2B tenant inside a customer's app. It is never\na Sylphx org and never a Resource name segment of anything but its own\nmemberships.",
        "properties": {
          "member_count": {
            "description": "Live memberships.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}`.",
            "type": "string"
          },
          "public_metadata": {
            "additionalProperties": true,
            "description": "App data.",
            "type": "object"
          },
          "slug": {
            "description": "Unique within the environment.",
            "type": "string"
          },
          "uid": {
            "description": "`cor_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "verified_domains": {
            "description": "Verified email domains; end users with a matching verified email may join.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.DeleteCustomerOrganizationRequest": {
        "description": "The request of DeleteCustomerOrganization.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the customer organization does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also close every membership.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the customer organization to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/CustomerOrganization"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.DeleteEmailDomainRequest": {
        "description": "The request of DeleteEmailDomain.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the email domain does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the email domain to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EmailDomain"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.DeleteEndUserRequest": {
        "description": "The request of DeleteEndUser.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the end user does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete the end user's memberships; sessions are always revoked.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the end user to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.DeleteMembershipRequest": {
        "description": "The request of DeleteMembership.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the membership does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the membership to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Membership"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.DeleteOauthClientRequest": {
        "description": "The request of DeleteOauthClient.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the OAuth client does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the OAuth client to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/OauthClient"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.DeleteOrganizationRoleRequest": {
        "description": "The request of DeleteOrganizationRole.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the organization role does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the organization role to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/OrganizationRole"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.EmailDomain": {
        "description": "An Email Domain is an email domain a customer organization claims. It is verified\nby a DNS TXT record; a verified domain appears in the organization's\n`verified_domains`, and one environment's organizations never verify the\nsame domain twice.",
        "properties": {
          "domain": {
            "description": "The domain, lowercase, for example `acme.com`.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/email_domains/{email_domain}`.",
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.auth.v1.EmailDomainState",
            "description": "The verification state.",
            "readOnly": true
          },
          "uid": {
            "description": "`dom_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "verification_record": {
            "description": "The TXT record name to publish, `_sylphx-verification.<domain>`.",
            "readOnly": true,
            "type": "string"
          },
          "verification_value": {
            "description": "The TXT record value to publish.",
            "readOnly": true,
            "type": "string"
          },
          "verify_time": {
            "description": "When the record was last found.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.EmailDomainState": {
        "description": "The verification state of an Email Domain.",
        "enum": [
          "pending",
          "verified"
        ],
        "type": "string"
      },
      "sylphx.auth.v1.EndUser": {
        "description": "An End User is a user of a customer's app, never a Sylphx member or\nprincipal. `(scope, email)` is unique among live end users. Delete is\nrevocation: it revokes every session and refuses new ones.",
        "properties": {
          "email": {
            "description": "The primary email address.",
            "type": "string"
          },
          "email_verify_time": {
            "description": "When `email` was verified.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "external_ids": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The customer's own ids for this end user, one per namespace\n(`game_user`, `steam_id`): how an app that signs users in by its own id\nfinds them again. Read on create; never changed through here, because a\nset namespace's value is never rewritten — `AttachEndUserExternalId` sets\nan unset one. At most four namespaces. Never an authorization input:\nscope checks use grant ids.",
            "type": "object"
          },
          "factors": {
            "description": "Enrolled factors.",
            "items": {
              "$ref": "#/components/schemas/sylphx.auth.v1.AuthMethod"
            },
            "readOnly": true,
            "type": "array"
          },
          "last_login_time": {
            "description": "The last successful sign-in.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "lock_expire_time": {
            "description": "Until when sign-in is locked after repeated failures; unset when not\nlocked. Unlock clears it; a suspension is `state`, not a lock.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}`.",
            "type": "string"
          },
          "password": {
            "description": "An initial password; write-only, checked against breached passwords.",
            "type": "string",
            "writeOnly": true,
            "x-sylphx-sensitive": true
          },
          "private_metadata": {
            "additionalProperties": true,
            "description": "App data readable only with an Access key.",
            "type": "object"
          },
          "public_metadata": {
            "additionalProperties": true,
            "description": "App data readable by the end user's own tokens.",
            "type": "object"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.auth.v1.EndUserState",
            "description": "The lifecycle state.",
            "readOnly": true
          },
          "synthetic_time": {
            "description": "When the end user became a test account: set once, when an end user who\nsigned up with an address matching the Auth config's\n`test_email_pattern` first proved that address by a link or code. No\nupdate, import, address change or sign-in method ever sets it; changing\nthe address clears it. Unset for every other end user.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`usr_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "unsafe_metadata": {
            "additionalProperties": true,
            "description": "App data the end user may write with their own session (preferences a\nsign-up form collects); never trust it for authorization.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.EndUserState": {
        "description": "The lifecycle state of an end user.",
        "enum": [
          "active",
          "suspended"
        ],
        "type": "string"
      },
      "sylphx.auth.v1.FindEndUserRequest": {
        "description": "The request of FindEndUser.",
        "properties": {
          "external_id": {
            "description": "The id to find.",
            "type": "string"
          },
          "namespace": {
            "description": "The customer's namespace of the id.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to look in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          }
        },
        "required": [
          "parent",
          "namespace",
          "external_id"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.FindEndUserResponse": {
        "description": "The response of FindEndUser.",
        "properties": {
          "end_user": {
            "$ref": "#/components/schemas/sylphx.auth.v1.EndUser",
            "description": "The end user holding the id."
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.GetAuthConfigRequest": {
        "description": "The request of GetAuthConfig.",
        "properties": {
          "name": {
            "description": "The name of the auth config to get.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/AuthConfig"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.GetCustomerOrganizationRequest": {
        "description": "The request of GetCustomerOrganization.",
        "properties": {
          "name": {
            "description": "The name of the customer organization to get.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/CustomerOrganization"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.GetEmailDomainRequest": {
        "description": "The request of GetEmailDomain.",
        "properties": {
          "name": {
            "description": "The name of the email domain to get.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EmailDomain"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.GetEndUserRequest": {
        "description": "The request of GetEndUser.",
        "properties": {
          "name": {
            "description": "The name of the end user to get.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.GetIdentityRequest": {
        "description": "The request of GetIdentity.",
        "properties": {
          "name": {
            "description": "The name of the identity to get.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Identity"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.GetInvitationRequest": {
        "description": "The request of GetInvitation.",
        "properties": {
          "name": {
            "description": "The name of the invitation to get.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Invitation"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.GetMembershipRequest": {
        "description": "The request of GetMembership.",
        "properties": {
          "name": {
            "description": "The name of the membership to get.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Membership"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.GetOauthClientRequest": {
        "description": "The request of GetOauthClient.",
        "properties": {
          "name": {
            "description": "The name of the OAuth client to get.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/OauthClient"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.GetOrganizationRoleRequest": {
        "description": "The request of GetOrganizationRole.",
        "properties": {
          "name": {
            "description": "The name of the organization role to get.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/OrganizationRole"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.GetSessionRequest": {
        "description": "The request of GetSession.",
        "properties": {
          "name": {
            "description": "The name of the session to get.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Session"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.GrantType": {
        "description": "An OAuth grant.",
        "enum": [
          "authorization_code",
          "refresh_token",
          "device_code",
          "client_credentials"
        ],
        "type": "string"
      },
      "sylphx.auth.v1.Identity": {
        "description": "An Identity is one way an end user signs in: a password, a verified email, a\nfederated provider account, a device credential (a guest account's secret),\nor a passkey. An end user always keeps at least one. An identity moves from\none end user to another only by `:move`, an operator action; the end user\nnever does it. It shows a fingerprint (a one-way digest), never the secret.",
        "properties": {
          "fingerprint": {
            "description": "A one-way digest of the provider and the provider's subject (or of the\ndevice credential's verifier). It identifies the identity in an audit\ntrail and reveals neither.",
            "readOnly": true,
            "type": "string"
          },
          "last_use_time": {
            "description": "The last sign-in with this identity, when known.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "link_time": {
            "description": "When the identity was linked.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}/identities/{identity}`.",
            "type": "string"
          },
          "provider": {
            "description": "The provider of a federated identity (`google`, `apple`, ...); empty\notherwise.",
            "readOnly": true,
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/sylphx.auth.v1.IdentityType",
            "description": "What kind of sign-in this is.",
            "readOnly": true
          },
          "uid": {
            "description": "The identity's id; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.IdentityType": {
        "description": "The kind of an Identity.",
        "enum": [
          "password",
          "email",
          "oidc",
          "device",
          "passkey"
        ],
        "type": "string"
      },
      "sylphx.auth.v1.Invitation": {
        "description": "An Invitation asks one email address to join a customer organization with\nroles. It is single-use and expires; accepting needs an end user whose\nverified email is the invited address, and creates the membership.",
        "properties": {
          "accept_time": {
            "description": "When it was accepted.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "email": {
            "description": "The invited address.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "end_user": {
            "description": "The end user who accepted it.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          },
          "expire_time": {
            "description": "When it expires.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "membership": {
            "description": "The membership accepting it created.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Membership"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/invitations/{invitation}`.",
            "type": "string"
          },
          "roles": {
            "description": "Roles the membership gets; empty means the environment's default roles.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.auth.v1.InvitationState",
            "description": "The lifecycle state.",
            "readOnly": true
          },
          "ttl": {
            "description": "How long it stays open; default 7 days, at most 30.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string",
            "writeOnly": true
          },
          "uid": {
            "description": "`inv_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.InvitationState": {
        "description": "The lifecycle of an Invitation.",
        "enum": [
          "pending",
          "accepted",
          "revoked",
          "expired"
        ],
        "type": "string"
      },
      "sylphx.auth.v1.ListCustomerOrganizationsRequest": {
        "description": "The request of ListCustomerOrganizations.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/CustomerOrganization"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.ListCustomerOrganizationsResponse": {
        "description": "The response of ListCustomerOrganizations.",
        "properties": {
          "customer_organizations": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.auth.v1.CustomerOrganization"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.ListEmailDomainsRequest": {
        "description": "The request of ListEmailDomains.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EmailDomain"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.ListEmailDomainsResponse": {
        "description": "The response of ListEmailDomains.",
        "properties": {
          "email_domains": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.auth.v1.EmailDomain"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.ListEndUsersRequest": {
        "description": "The request of ListEndUsers.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.ListEndUsersResponse": {
        "description": "The response of ListEndUsers.",
        "properties": {
          "end_users": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.auth.v1.EndUser"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.ListIdentitiesRequest": {
        "description": "The request of ListIdentities.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The end user whose identities to list.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Identity"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.ListIdentitiesResponse": {
        "description": "The response of ListIdentities.",
        "properties": {
          "identities": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.auth.v1.Identity"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.ListInvitationsRequest": {
        "description": "The request of ListInvitations.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Invitation"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.ListInvitationsResponse": {
        "description": "The response of ListInvitations.",
        "properties": {
          "invitations": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.auth.v1.Invitation"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.ListMembershipsRequest": {
        "description": "The request of ListMemberships.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in. `…/customer_organizations/-` (AIP-159) lists one end\nuser's memberships across the environment's organizations and requires\n`filter = end_user=\"…\"`; each result carries its own organization's name.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Membership"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.ListMembershipsResponse": {
        "description": "The response of ListMemberships.",
        "properties": {
          "memberships": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.auth.v1.Membership"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.ListOauthClientsRequest": {
        "description": "The request of ListOauthClients.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/OauthClient"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.ListOauthClientsResponse": {
        "description": "The response of ListOauthClients.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "oauth_clients": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.auth.v1.OauthClient"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.ListOrganizationRolesRequest": {
        "description": "The request of ListOrganizationRoles.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/OrganizationRole"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.ListOrganizationRolesResponse": {
        "description": "The response of ListOrganizationRoles.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "organization_roles": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.auth.v1.OrganizationRole"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.ListSessionsRequest": {
        "description": "The request of ListSessions.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Session"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.ListSessionsResponse": {
        "description": "The response of ListSessions.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "sessions": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.auth.v1.Session"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.Membership": {
        "description": "A Membership places an end user in a customer organization with app-defined\nroles. Roles are app data, not Access policy. Changes append to history with\na current head per (user, organization); Delete closes the membership.",
        "properties": {
          "end_user": {
            "description": "The member.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/memberships/{membership}`.",
            "type": "string"
          },
          "roles": {
            "description": "App-defined roles, for example `admin`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "uid": {
            "description": "`mbr_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "end_user"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.MoveIdentityRequest": {
        "description": "The request of MoveIdentity.",
        "properties": {
          "name": {
            "description": "The name of the identity to move.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Identity"
          },
          "reason": {
            "description": "Why the identity moves (1 to 512 characters); recorded in the audit trail.",
            "type": "string"
          },
          "target_end_user": {
            "description": "The end user that receives the identity.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          }
        },
        "required": [
          "name",
          "target_end_user",
          "reason"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.OauthClient": {
        "description": "An OAuth Client is a relying party of the customer's authorization server:\nits app, API, or CLI. Tokens are signed by a Sylphx Keys handle and verify\noffline from the published JWKS.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/oauth_clients/{oauth_client}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.auth.v1.OauthClientSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.auth.v1.OauthClientStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`ocl_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.OauthClientSpec": {
        "description": "OauthClientSpec is the caller-writable state of an OauthClient.",
        "properties": {
          "access_token_ttl": {
            "description": "Access token lifetime; default 1h.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "client_type": {
            "$ref": "#/components/schemas/sylphx.auth.v1.OauthClientType",
            "description": "Confidential or public.",
            "x-sylphx-immutable": true
          },
          "dpop_required": {
            "description": "Require DPoP-bound tokens (RFC 9449).",
            "type": "boolean"
          },
          "grant_types": {
            "description": "Allowed grants.",
            "items": {
              "$ref": "#/components/schemas/sylphx.auth.v1.GrantType"
            },
            "type": "array"
          },
          "jwks_uri": {
            "description": "The client's JWKS URI, for `private_key_jwt`.",
            "type": "string"
          },
          "redirect_uris": {
            "description": "Exact redirect URIs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "refresh_token_ttl": {
            "description": "Refresh token lifetime; default 30d.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "scopes": {
            "description": "Scopes the client may request.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "token_endpoint_auth_method": {
            "$ref": "#/components/schemas/sylphx.auth.v1.TokenEndpointAuthMethod",
            "description": "How the client authenticates at the token endpoint."
          }
        },
        "required": [
          "client_type",
          "token_endpoint_auth_method",
          "grant_types"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.OauthClientStatus": {
        "description": "OauthClientStatus is the observed state of an OauthClient.",
        "properties": {
          "client_id": {
            "description": "The OAuth `client_id`.",
            "readOnly": true,
            "type": "string"
          },
          "client_secret": {
            "description": "The client secret, for `client_secret_basic`; set only in the responses of\nCreate and RollSecret.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "client_secret_last4": {
            "description": "The last four characters of the client secret.",
            "readOnly": true,
            "type": "string"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.OauthClientType": {
        "description": "RFC 6749 client type.",
        "enum": [
          "confidential",
          "public"
        ],
        "type": "string"
      },
      "sylphx.auth.v1.OrganizationRole": {
        "description": "An Organization Role is an app-defined role of the environment's customer\norganizations: a key that memberships and invitations name, a display name\n(`meta.display_name`), and the app's own permission strings. Roles are app\ndata, not Access policy. `owner`, `admin`, and `member` are built in and\nneed no Organization Role.",
        "properties": {
          "auto_assign": {
            "description": "Whether new members and invitations without roles get this role.",
            "type": "boolean"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/organization_roles/{organization_role}`;\nthe final segment is the role key memberships name, for example\n`hr_manager`.",
            "type": "string"
          },
          "permissions": {
            "description": "The app's permission strings `<resource>:<action>`, for example\n`invoices:read` or `org:payroll:approve`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "uid": {
            "description": "`orl_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.PasskeyPolicy": {
        "description": "Passkey requirements.",
        "properties": {
          "aaguid_allowlist": {
            "description": "Allowed authenticator AAGUIDs; empty allows any.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "device_bound": {
            "description": "Refuse synced (multi-device) passkeys.",
            "type": "boolean"
          },
          "required": {
            "description": "Require a passkey for every end user.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.PortalConfig": {
        "description": "Account Portal origin and branding.",
        "properties": {
          "custom_domain": {
            "description": "A verified Network Domain serving the portal; unset uses the default\norigin.",
            "type": "string"
          },
          "logo_uri": {
            "description": "An HTTPS logo URI.",
            "type": "string"
          },
          "primary_color": {
            "description": "The primary color, `#rrggbb`.",
            "type": "string"
          },
          "product_title": {
            "description": "The product name shown to end users.",
            "type": "string"
          },
          "sylphx_branding": {
            "description": "Show Sylphx branding.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.ReactivateEndUserRequest": {
        "description": "The request of ReactivateEndUser.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the end user.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.RevokeEndUserSessionsRequest": {
        "description": "The request of RevokeEndUserSessions.",
        "properties": {
          "name": {
            "description": "The name of the end user.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.RevokeEndUserSessionsResponse": {
        "description": "The response of RevokeEndUserSessions.",
        "properties": {
          "revoked_count": {
            "description": "Sessions revoked.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.RevokeInvitationRequest": {
        "description": "The request of RevokeInvitation.",
        "properties": {
          "name": {
            "description": "The name of the invitation.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Invitation"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.RevokeSessionRequest": {
        "description": "The request of RevokeSession.",
        "properties": {
          "name": {
            "description": "The name of the session.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/Session"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.RollOauthClientSecretRequest": {
        "description": "The request of RollOauthClientSecret.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "grace_period": {
            "description": "How long the old secret keeps verifying; default 24h.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "name": {
            "description": "The name of the OAuth client.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/OauthClient"
          },
          "validate_only": {
            "description": "Validate without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.Session": {
        "description": "A Session is an opaque Auth session of an end user, issued by a sign-in\nceremony. Sessions are revoked, never deleted; revocation is a CAEP signal\ndelivered through Sylphx Events.",
        "properties": {
          "active_organization": {
            "description": "The active customer organization.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/CustomerOrganization"
          },
          "assurance": {
            "$ref": "#/components/schemas/sylphx.auth.v1.AuthMethod",
            "description": "How the session was established.",
            "readOnly": true
          },
          "expire_time": {
            "description": "When the session expires.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "ip_address": {
            "description": "The client IP at sign-in.",
            "readOnly": true,
            "type": "string"
          },
          "last_active_time": {
            "description": "The last authenticated use.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "mfa": {
            "description": "Whether a second factor was presented.",
            "readOnly": true,
            "type": "boolean"
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}/sessions/{session}`.",
            "type": "string"
          },
          "oauth_client": {
            "description": "The OAuth client the session signed in to, if any.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/OauthClient"
          },
          "revoke_reason": {
            "$ref": "#/components/schemas/sylphx.auth.v1.SessionRevokeReason",
            "description": "Why the session was revoked.",
            "readOnly": true
          },
          "revoke_time": {
            "description": "When the session was revoked.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.auth.v1.SessionState",
            "description": "The session state.",
            "readOnly": true
          },
          "uid": {
            "description": "`ses_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "user_agent": {
            "description": "The user agent at sign-in.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.SessionPolicy": {
        "description": "Session limits.",
        "properties": {
          "absolute_timeout": {
            "description": "Revoke this long after sign-in regardless of use; default 90d.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "fingerprint_binding": {
            "description": "Bind sessions to network and agent; a mismatch demands step-up.",
            "type": "boolean"
          },
          "idle_timeout": {
            "description": "Revoke after this long without use; default 30d.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "max_concurrent_sessions": {
            "description": "Concurrent sessions per end user; excess sessions are revoked, oldest\nfirst. 0 is unlimited.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.auth.v1.SessionRevokeReason": {
        "description": "Why a session was revoked.",
        "enum": [
          "sign_out",
          "user",
          "admin",
          "session_limit",
          "recovery",
          "suspended",
          "deleted",
          "fingerprint"
        ],
        "type": "string"
      },
      "sylphx.auth.v1.SessionState": {
        "description": "The state of a session.",
        "enum": [
          "active",
          "revoked",
          "expired"
        ],
        "type": "string"
      },
      "sylphx.auth.v1.SocialProvider": {
        "description": "One social sign-in provider of an environment's Auth.",
        "properties": {
          "credentials": {
            "description": "`shared` (Sylphx's client) or `custom` (your own client).",
            "readOnly": true,
            "type": "string"
          },
          "enabled": {
            "description": "Whether the provider is offered. Turning one on needs credentials:\nSylphx's shared client for that provider, or your own.",
            "type": "boolean"
          },
          "provider": {
            "description": "The provider: `google`, `github` or `apple`.",
            "type": "string"
          },
          "usable": {
            "description": "Whether end users can sign in with it now: it is on and its credentials\nexist. The client config (`GET /v1/client/config`) lists exactly the\nusable providers.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "required": [
          "provider"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.SuspendEndUserRequest": {
        "description": "The request of SuspendEndUser.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the end user.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          },
          "reason": {
            "description": "Why; shown to administrators only.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.TokenEndpointAuthMethod": {
        "description": "How a client authenticates at the token endpoint.",
        "enum": [
          "none",
          "client_secret_basic",
          "private_key_jwt"
        ],
        "type": "string"
      },
      "sylphx.auth.v1.UnlockEndUserRequest": {
        "description": "The request of UnlockEndUser.",
        "properties": {
          "name": {
            "description": "The name of the end user.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.UpdateAuthConfigRequest": {
        "description": "The request of UpdateAuthConfig.",
        "properties": {
          "allow_missing": {
            "description": "Create the auth config when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "auth_config": {
            "$ref": "#/components/schemas/sylphx.auth.v1.AuthConfig",
            "description": "The auth config to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "auth_config"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.UpdateCustomerOrganizationRequest": {
        "description": "The request of UpdateCustomerOrganization.",
        "properties": {
          "allow_missing": {
            "description": "Create the customer organization when it does not exist (declarative\nupsert).",
            "type": "boolean"
          },
          "customer_organization": {
            "$ref": "#/components/schemas/sylphx.auth.v1.CustomerOrganization",
            "description": "The customer organization to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "customer_organization"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.UpdateEndUserRequest": {
        "description": "The request of UpdateEndUser.",
        "properties": {
          "end_user": {
            "$ref": "#/components/schemas/sylphx.auth.v1.EndUser",
            "description": "The end user to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "end_user"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.UpdateMembershipRequest": {
        "description": "The request of UpdateMembership.",
        "properties": {
          "membership": {
            "$ref": "#/components/schemas/sylphx.auth.v1.Membership",
            "description": "The membership to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "membership"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.UpdateOauthClientRequest": {
        "description": "The request of UpdateOauthClient.",
        "properties": {
          "allow_missing": {
            "description": "Create the OAuth client when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "oauth_client": {
            "$ref": "#/components/schemas/sylphx.auth.v1.OauthClient",
            "description": "The OAuth client to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "oauth_client"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.UpdateOrganizationRoleRequest": {
        "description": "The request of UpdateOrganizationRole.",
        "properties": {
          "organization_role": {
            "$ref": "#/components/schemas/sylphx.auth.v1.OrganizationRole",
            "description": "The organization role to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "organization_role"
        ],
        "type": "object"
      },
      "sylphx.auth.v1.VerifyEmailDomainRequest": {
        "description": "The request of VerifyEmailDomain.",
        "properties": {
          "name": {
            "description": "The name of the email domain.",
            "type": "string",
            "x-sylphx-resource-reference": "auth.sylphx.com/EmailDomain"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.BillingAccount": {
        "description": "A BillingAccount is an org's plan subscription and payment standing: the\nplan it is on, its spend limit, and its billing period. Each org has\nexactly one, `orgs/{org}/billing_accounts/default`, created with the org.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/billing_accounts/default`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.billing.v1.BillingAccountSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.billing.v1.BillingAccountStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`bac_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.BillingAccountSpec": {
        "description": "BillingAccountSpec is the caller-writable state of a BillingAccount.",
        "properties": {
          "billing_email": {
            "description": "Where invoices and payment notices are sent.",
            "type": "string"
          },
          "credit_limit": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "The reviewed invoice receivable limit, USD. Unset/null on approved invoice\nterms means unlimited and never suspended. Finite limits retain net-term\ndunning. Writing requires billing:terms:approve; a self cap is separate."
          },
          "invoice_terms_approved": {
            "description": "Credit approval is an ordinary account setting, not a company flag.\nWriting this field requires billing:terms:approve in addition to admin.",
            "type": "boolean"
          },
          "invoice_terms_days": {
            "description": "Net days from finalization, 1..365. Changes require billing:terms:approve\nand affect only newly finalized invoices, never frozen history.",
            "format": "int32",
            "type": "integer"
          },
          "payment_method": {
            "description": "Collection choice: `card` (default), or `invoice` with approved net terms.",
            "type": "string"
          },
          "plan": {
            "description": "The public plan, for example `plans/pro`. Card accounts activate Pro by\npayment; approved invoice accounts may select it without a card.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/Plan"
          },
          "spend_limit": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "The customer's monthly cap on usage past included amounts. A lower cap\nis always enforced independently of the seller's reviewed credit limit."
          },
          "unlimited_spend": {
            "description": "Clears the self spend cap; never lifts a tier or reviewed credit limit.",
            "type": "boolean"
          }
        },
        "required": [
          "plan"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.BillingAccountState": {
        "description": "BillingAccountState is an org's payment standing.",
        "enum": [
          "active",
          "past_due",
          "suspended"
        ],
        "type": "string"
      },
      "sylphx.billing.v1.BillingAccountStatus": {
        "description": "BillingAccountStatus is the observed state of a BillingAccount.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "currency_code": {
            "description": "The currency every invoice of the org is in, ISO 4217.",
            "readOnly": true,
            "type": "string"
          },
          "effective_spend_limit": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "The spend limit in force, after the default is applied; unset when\nunlimited.",
            "readOnly": true
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "payment_method": {
            "description": "The default payment method, for example `visa •••• 4242`; empty when\nnone is saved.",
            "readOnly": true,
            "type": "string"
          },
          "payment_method_verified": {
            "description": "A payment method is on file and verified.",
            "readOnly": true,
            "type": "boolean"
          },
          "period_end_time": {
            "description": "The end of the current billing period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "period_start_time": {
            "description": "The start of the current billing period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "plan_version": {
            "description": "The plan version the org is on, for example `2026-11-02`.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.billing.v1.BillingAccountState",
            "description": "The payment standing.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.BudgetLease": {
        "description": "A BudgetLease is budget Billing pre-authorized for one holder to spend\non hard-spend usage without calling Billing per request. Readable by the\norg; written only by Billing.",
        "properties": {
          "dimensions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The lease key: the meter's required dimensions.",
            "readOnly": true,
            "type": "object"
          },
          "expire_time": {
            "description": "When the holder stops debiting the lease.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "fence": {
            "description": "The fence: monotonic per org, holder, and lease key; a renewal carrying\nan older value is refused.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "granted_nano_usd": {
            "description": "Billing's valuation of the grant at list price, in nano-USD; 0 for a\nclass Sylphx runs but does not sell.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "granted_quantity": {
            "description": "The units granted, in the meter's base unit.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "holder": {
            "description": "The holder: a SPIFFE role and cell, for example\n`services/sandboxes/cells/fs01`.",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata.",
            "readOnly": true
          },
          "meter": {
            "description": "The leased meter. A lease is in the meter's units: the holder never\nholds a price, Billing prices each grant from its price book.",
            "readOnly": true,
            "type": "string"
          },
          "meter_version": {
            "description": "The meter version leased.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "name": {
            "description": "`orgs/{org}/budget_leases/{budget_lease}`.",
            "type": "string"
          },
          "pool": {
            "description": "The pool: `sandboxes`, `ai`, `runners`, or `notify.sms`.",
            "readOnly": true,
            "type": "string"
          },
          "reported_debit_nano_usd": {
            "description": "The debit the holder reported on renew or release, in nano-USD.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "reported_debit_quantity": {
            "description": "The units the holder reported on renew or release.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "settled_debit_nano_usd": {
            "description": "The debit rated from ingested usage, in nano-USD.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "settled_quantity": {
            "description": "The units ingested usage attributes to the lease.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.billing.v1.BudgetLeaseState",
            "description": "The lease's lifecycle state.",
            "readOnly": true
          },
          "uid": {
            "description": "`bl_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.BudgetLeaseState": {
        "description": "BudgetLeaseState is the lifecycle state of a BudgetLease.",
        "enum": [
          "active",
          "released",
          "expired",
          "settled",
          "refused"
        ],
        "type": "string"
      },
      "sylphx.billing.v1.CreditNote": {
        "description": "CreditNote is an append-only correction of a finalized invoice.",
        "properties": {
          "issue_time": {
            "description": "When the credit note was issued.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "number": {
            "description": "The human-readable credit note number.",
            "readOnly": true,
            "type": "string"
          },
          "reason": {
            "description": "A customer-safe reason.",
            "readOnly": true,
            "type": "string"
          },
          "total": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "The amount credited.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.GetBillingAccountRequest": {
        "description": "The request of GetBillingAccount.",
        "properties": {
          "name": {
            "description": "The name of the billing account to get.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/BillingAccount"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.GetBudgetLeaseRequest": {
        "description": "The request of GetBudgetLease.",
        "properties": {
          "name": {
            "description": "The name of the budget lease to get.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/BudgetLease"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.GetInvoiceRequest": {
        "description": "The request of GetInvoice.",
        "properties": {
          "name": {
            "description": "The name of the invoice to get.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/Invoice"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.GetMeterRequest": {
        "description": "The request of GetMeter.",
        "properties": {
          "name": {
            "description": "The name of the meter to get.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/Meter"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.GetPlanRequest": {
        "description": "The request of GetPlan.",
        "properties": {
          "name": {
            "description": "The name of the plan to get.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/Plan"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.GetUsageReportRequest": {
        "description": "The request of GetUsageReport.",
        "properties": {
          "name": {
            "description": "The name of the usage report to get.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/UsageReport"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.Invoice": {
        "description": "An Invoice is one org's bill for one billing period: per-service meter\nlines, the plan fee, and late usage from earlier periods. Finalization\nfreezes it; a correction is a credit note, never an edit.",
        "properties": {
          "amount_due": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "What is still owed.",
            "readOnly": true
          },
          "amount_paid": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "What has been paid, confirmed by provider readback or authorized settlement.",
            "readOnly": true
          },
          "completeness": {
            "description": "The share of the period's usage that had reached Billing when the\ninvoice was finalized, from 0 to 1; below 1 the invoice carries a note.",
            "readOnly": true,
            "type": "number"
          },
          "credit_notes": {
            "description": "Credit notes issued against this invoice, oldest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.CreditNote"
            },
            "readOnly": true,
            "type": "array"
          },
          "currency_code": {
            "description": "ISO 4217 currency of every amount.",
            "readOnly": true,
            "type": "string"
          },
          "due_time": {
            "description": "When payment is due.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "finalize_time": {
            "description": "When the invoice was finalized.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "lines": {
            "description": "The lines, grouped by service.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.InvoiceLine"
            },
            "readOnly": true,
            "type": "array"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata.",
            "readOnly": true
          },
          "name": {
            "description": "`orgs/{org}/invoices/{invoice}`.",
            "type": "string"
          },
          "number": {
            "description": "The human-readable invoice number, unique per org.",
            "readOnly": true,
            "type": "string"
          },
          "paid_time": {
            "description": "When the invoice was paid in full.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "period_end_time": {
            "description": "The end of the billed period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "period_start_time": {
            "description": "The start of the billed period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "settlements": {
            "description": "Immutable authorized external payment records, oldest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.InvoiceSettlement"
            },
            "readOnly": true,
            "type": "array"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.billing.v1.InvoiceState",
            "description": "The invoice's lifecycle state.",
            "readOnly": true
          },
          "subtotal": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "The sum of the rounded lines before tax.",
            "readOnly": true
          },
          "tax": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "Tax.",
            "readOnly": true
          },
          "total": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "Subtotal plus tax.",
            "readOnly": true
          },
          "uid": {
            "description": "`inv_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.InvoiceLine": {
        "description": "InvoiceLine is one line of an invoice.",
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "The line amount in minor units. Project usage lines share the half-even\nrounded org price total; deterministic residual allocation conserves it.",
            "readOnly": true
          },
          "description": {
            "description": "A customer-safe description.",
            "readOnly": true,
            "type": "string"
          },
          "dimensions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The dimensions the price matched.",
            "readOnly": true,
            "type": "object"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.billing.v1.InvoiceLineKind",
            "description": "What the line charges for.",
            "readOnly": true
          },
          "meter": {
            "description": "The meter id, for usage lines.",
            "readOnly": true,
            "type": "string"
          },
          "meter_version": {
            "description": "The meter version, for usage lines.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "project": {
            "description": "The project whose usage this line rates. Empty for org-level lines and\nhistorical invoices without recorded project attribution. Included\nallowances are pooled per org and price, never duplicated per project.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Project"
          },
          "quantity": {
            "description": "The rated quantity, in the meter's base unit.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "service": {
            "description": "The service the line belongs to; empty for the plan fee.",
            "readOnly": true,
            "type": "string"
          },
          "shadow_cost": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "Sylphx's internal cost to serve, never billed. Returned only on GET/List\nto an authenticated org-wide platform seller operator holding billing:read\nand billing:operator:read; absent from customer and recordPayment responses.\nUnset without a recorded shadow price. Project costs conserve rounded org\nCOGS per price by the same deterministic allocation.",
            "readOnly": true
          },
          "tier": {
            "description": "The price tier, from 1.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "unit_amount_minor": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Rational",
            "description": "The price per base unit.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.InvoiceLineKind": {
        "description": "InvoiceLineKind is what an invoice line charges for.",
        "enum": [
          "fee",
          "usage",
          "late_usage",
          "credit",
          "proration"
        ],
        "type": "string"
      },
      "sylphx.billing.v1.InvoiceSettlement": {
        "description": "InvoiceSettlement is an immutable full payment recorded by a seller operator\nwith platform-only billing:payments:record. Internal settlement is noncash.",
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "The exact full outstanding amount settled.",
            "readOnly": true
          },
          "payment_id": {
            "description": "Deterministic identity of the recorded payment.",
            "readOnly": true,
            "type": "string"
          },
          "payment_method": {
            "description": "card, invoice, or internal_settlement.",
            "readOnly": true,
            "type": "string"
          },
          "record_time": {
            "description": "When Billing recorded the payment.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "recorder": {
            "description": "Principal from the verified seller Access grant, never supplied by the request.",
            "readOnly": true,
            "type": "string"
          },
          "settlement_reference": {
            "description": "External provider, bank or internal journal reference.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.InvoiceState": {
        "description": "InvoiceState is the lifecycle state of an Invoice.",
        "enum": [
          "draft",
          "open",
          "paid",
          "void",
          "uncollectible",
          "credited"
        ],
        "type": "string"
      },
      "sylphx.billing.v1.ListBillingAccountsRequest": {
        "description": "The request of ListBillingAccounts.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The org to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/BillingAccount"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.ListBillingAccountsResponse": {
        "description": "The response of ListBillingAccounts.",
        "properties": {
          "billing_accounts": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.BillingAccount"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.ListBudgetLeasesRequest": {
        "description": "The request of ListBudgetLeases.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The org to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/BudgetLease"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.ListBudgetLeasesResponse": {
        "description": "The response of ListBudgetLeases.",
        "properties": {
          "budget_leases": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.BudgetLease"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.ListInvoicesRequest": {
        "description": "The request of ListInvoices.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The org to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/Invoice"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.ListInvoicesResponse": {
        "description": "The response of ListInvoices.",
        "properties": {
          "invoices": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.Invoice"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.ListMetersRequest": {
        "description": "The request of ListMeters.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.ListMetersResponse": {
        "description": "The response of ListMeters.",
        "properties": {
          "meters": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.Meter"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.ListPlansRequest": {
        "description": "The request of ListPlans.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.ListPlansResponse": {
        "description": "The response of ListPlans.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "plans": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.Plan"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.ListUsageReportsRequest": {
        "description": "The request of ListUsageReports.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The org to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/UsageReport"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.ListUsageReportsResponse": {
        "description": "The response of ListUsageReports.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "usage_reports": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.UsageReport"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.Meter": {
        "description": "A Meter is one billable quantity a service emits, for example\n`hosting.vcpu_seconds`. Meters are top-level and\nread-only; each has immutable versions, and a usage event names the\nversion it was measured under.",
        "properties": {
          "current_version": {
            "description": "The version new usage is measured under.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata.",
            "readOnly": true
          },
          "name": {
            "description": "`meters/{meter}`, where `{meter}` is the meter id\n`{service}.{quantity}`, for example `meters/hosting.vcpu_seconds`.",
            "type": "string"
          },
          "service": {
            "description": "The service that emits the meter; the meter id's prefix.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`mtr_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          },
          "versions": {
            "description": "Every version, oldest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.MeterVersion"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.MeterAggregation": {
        "description": "MeterAggregation is how a meter's quantities combine over a period.",
        "enum": [
          "sum",
          "max",
          "last",
          "unique_count"
        ],
        "type": "string"
      },
      "sylphx.billing.v1.MeterDimension": {
        "description": "MeterDimension is one key a usage event of a meter may carry.",
        "properties": {
          "key": {
            "description": "The dimension key, for example `class`.",
            "readOnly": true,
            "type": "string"
          },
          "required": {
            "description": "Every event must carry it.",
            "readOnly": true,
            "type": "boolean"
          },
          "values": {
            "description": "The allowed values; empty means a bounded free-form string.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.MeterPrice": {
        "description": "MeterPrice is a plan's included quantity and price for one meter version,\noptionally narrowed to a dimension set (metering.md §4.3).",
        "properties": {
          "dimension_match": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The dimensions a usage row must carry for this price to apply; the most\nspecific match wins.",
            "readOnly": true,
            "type": "object"
          },
          "included": {
            "description": "The quantity included per period, in the meter's base unit.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "meter": {
            "description": "The meter id.",
            "readOnly": true,
            "type": "string"
          },
          "meter_version": {
            "description": "The meter version the price applies to.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "overage": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Overage",
            "description": "What happens past the included quantity.",
            "readOnly": true
          },
          "tiers": {
            "description": "Price tiers past the included quantity, lowest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.PriceTier"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.MeterVersion": {
        "description": "MeterVersion is one immutable definition of a meter.",
        "properties": {
          "aggregation": {
            "$ref": "#/components/schemas/sylphx.billing.v1.MeterAggregation",
            "description": "How quantities combine over a period.",
            "readOnly": true
          },
          "dimensions": {
            "description": "The dimensions a usage event may carry; at most 8.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.MeterDimension"
            },
            "readOnly": true,
            "type": "array"
          },
          "effective_time": {
            "description": "When usage starts being measured under this version.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "hard_spend": {
            "description": "Spend is bounded by budget leases.",
            "readOnly": true,
            "type": "boolean"
          },
          "unit": {
            "description": "The base unit, for example `s`, `B`, or `tokens`.",
            "readOnly": true,
            "type": "string"
          },
          "value_scale": {
            "description": "A quantity is an integer count of 1/value_scale base units; 1 for\nintegral units.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "version": {
            "description": "The version number, from 1.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.Money": {
        "description": "Money is an amount in one currency, in integer minor units.",
        "properties": {
          "currency_code": {
            "description": "ISO 4217 currency, for example `USD`.",
            "type": "string"
          },
          "units_minor": {
            "description": "The amount in the currency's minor unit (cents for USD).",
            "format": "int64",
            "type": "string"
          }
        },
        "required": [
          "currency_code",
          "units_minor"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.Overage": {
        "description": "Overage is what happens when usage passes a plan's included quantity.",
        "enum": [
          "deny",
          "bill",
          "bill_until_spend_limit"
        ],
        "type": "string"
      },
      "sylphx.billing.v1.Plan": {
        "description": "A Plan is a public or private price list: Free, Pro, and the private\nplans onboarding needs (`agent-trial`, partner plans). Plans are top-level\nand read-only; each has immutable dated versions, and an org is on\nexactly one plan version at a time.",
        "properties": {
          "current_version": {
            "description": "The version new subscriptions start on, for example `2026-11-02`.",
            "readOnly": true,
            "type": "string"
          },
          "listed": {
            "description": "Listed on the pricing page; private plans are visible only to their\norgs.",
            "readOnly": true,
            "type": "boolean"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata.",
            "readOnly": true
          },
          "name": {
            "description": "`plans/{plan}`, for example `plans/pro`.",
            "type": "string"
          },
          "uid": {
            "description": "`pln_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          },
          "versions": {
            "description": "Every version, oldest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.PlanVersion"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.PlanVersion": {
        "description": "PlanVersion is one immutable, dated version of a plan.",
        "properties": {
          "effective_time": {
            "description": "When the version takes effect.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "fee": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "The monthly fee, charged in advance.",
            "readOnly": true
          },
          "included_credit": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "A monthly usage credit applied to overage.",
            "readOnly": true
          },
          "meter_prices": {
            "description": "Included quantity and price per meter.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.MeterPrice"
            },
            "readOnly": true,
            "type": "array"
          },
          "payment_method_required": {
            "description": "A payment method is required to be on this plan.",
            "readOnly": true,
            "type": "boolean"
          },
          "rate_limit_policies": {
            "description": "The rate limit per rate class (`control`, `inference`) as a token bucket,\nthen the higher limits of each committed-spend band.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.RateLimitPolicy"
            },
            "readOnly": true,
            "type": "array"
          },
          "rate_limits": {
            "additionalProperties": {
              "format": "int64",
              "type": "string"
            },
            "description": "Requests per minute per rate class (`rate_limit_policies` × 60, without\nbursts or bands).",
            "readOnly": true,
            "type": "object"
          },
          "resource_limits": {
            "additionalProperties": {
              "format": "int64",
              "type": "string"
            },
            "description": "The most Resources per collection, for example `projects`; -1 means\nunlimited.",
            "readOnly": true,
            "type": "object"
          },
          "version": {
            "description": "The version, the date it takes effect: `YYYY-MM-DD`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.PriceTier": {
        "description": "PriceTier is one tier of a graduated price.",
        "properties": {
          "unit_amount_minor": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Rational",
            "description": "The price per base unit, in minor units of the plan's currency.",
            "readOnly": true
          },
          "upper_bound": {
            "description": "The tier ends at this quantity in the period, inclusive; 0 means\nunbounded.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.QueryUsageReportsRequest": {
        "description": "The request of QueryUsageReports.",
        "properties": {
          "end_time": {
            "description": "The end of the range, exclusive; at most 400 days after `start_time`.",
            "format": "date-time",
            "type": "string"
          },
          "granularity": {
            "$ref": "#/components/schemas/sylphx.billing.v1.UsageGranularity",
            "description": "The bucket width."
          },
          "group_dimensions": {
            "description": "Dimension keys to group by, for example `model`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "group_projects": {
            "description": "Group by project in addition to meter.",
            "type": "boolean"
          },
          "meters": {
            "description": "Only these meter ids; empty means every meter.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "parent": {
            "description": "The org to query.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/UsageReport"
          },
          "projects": {
            "description": "Only these projects; empty means every project.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-resource-reference": "access.sylphx.com/Project"
          },
          "start_time": {
            "description": "The start of the range, inclusive.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "start_time",
          "end_time",
          "granularity"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.QueryUsageReportsResponse": {
        "description": "The response of QueryUsageReports.",
        "properties": {
          "completeness": {
            "description": "The share of the range's usage that has reached Billing, from 0 to 1.",
            "type": "number"
          },
          "compute_time": {
            "description": "The instant the answer reflects.",
            "format": "date-time",
            "type": "string"
          },
          "rows": {
            "description": "One row per bucket and group, in time order; at most 10,000.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.UsageRow"
            },
            "type": "array"
          },
          "watermarks": {
            "additionalProperties": {
              "format": "date-time",
              "type": "string"
            },
            "description": "Each emitting service's watermark: the time of the oldest usage it has\nnot yet delivered.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.RateLimitPolicy": {
        "description": "RateLimitPolicy is one rate class's token bucket on a plan version.",
        "properties": {
          "burst": {
            "description": "Requests the bucket holds for a burst.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "min_monthly_spend": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "Set on a band: the committed monthly spend from which it applies.",
            "readOnly": true
          },
          "rate_class": {
            "description": "`control` (the Resource API) or `inference` (AI requests).",
            "readOnly": true,
            "type": "string"
          },
          "requests_per_second": {
            "description": "Sustained requests per second, per org.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.Rational": {
        "description": "Rational is an exact fraction; prices per unit are rational so rating\nrounds once, at the invoice line.",
        "properties": {
          "denominator": {
            "description": "The denominator; never zero.",
            "format": "int64",
            "type": "string"
          },
          "numerator": {
            "description": "The numerator.",
            "format": "int64",
            "type": "string"
          }
        },
        "required": [
          "numerator",
          "denominator"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.RecordInvoicePaymentRequest": {
        "description": "A seller-verified external settlement, never a customer's payment assertion.",
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "Positive exact full outstanding balance in USD integer minor units."
          },
          "name": {
            "description": "The invoice to settle in full.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/Invoice"
          },
          "payment_method": {
            "description": "card or invoice debits cash; internal_settlement debits a dedicated\nnoncash journal account, never cash or promotional/customer credit.",
            "type": "string"
          },
          "settlement_reference": {
            "description": "Bank/provider/journal reference, 1..200 bytes, unique per org and method.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "payment_method",
          "settlement_reference",
          "amount"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.SetupPaymentMethodRequest": {
        "description": "The request of SetupPaymentMethod.",
        "properties": {
          "name": {
            "description": "The billing account, `orgs/{org}/billing_accounts/default`.",
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/BillingAccount"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.SetupPaymentMethodResponse": {
        "description": "The response of SetupPaymentMethod: what the console needs to collect a\npayment method with the provider's own client library.",
        "properties": {
          "client_secret": {
            "description": "The provider's client secret for this setup; single use.",
            "readOnly": true,
            "type": "string"
          },
          "provider": {
            "description": "The provider, `stripe`.",
            "readOnly": true,
            "type": "string"
          },
          "publishable_key": {
            "description": "The provider's publishable key for its client library.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.UpdateBillingAccountRequest": {
        "description": "The request of UpdateBillingAccount.",
        "properties": {
          "billing_account": {
            "$ref": "#/components/schemas/sylphx.billing.v1.BillingAccount",
            "description": "The billing account to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "billing_account"
        ],
        "type": "object"
      },
      "sylphx.billing.v1.UsageGranularity": {
        "description": "UsageGranularity is the bucket width of a usage query.",
        "enum": [
          "hour",
          "day",
          "period"
        ],
        "type": "string"
      },
      "sylphx.billing.v1.UsageLine": {
        "description": "UsageLine is the usage of one project, meter, and dimension set.",
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "The rated amount so far, before rounding to the invoice line; unset\nwhile the meter has no price for these dimensions.",
            "readOnly": true
          },
          "dimensions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The dimensions.",
            "readOnly": true,
            "type": "object"
          },
          "event_count": {
            "description": "How many usage events were aggregated.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "meter": {
            "description": "The meter id.",
            "readOnly": true,
            "type": "string"
          },
          "meter_version": {
            "description": "The meter version.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "project": {
            "description": "The project that used it; empty for org-level usage (Runners, Network\ndomains), whose attribution is a dimension such as `repo`.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Project"
          },
          "quantity": {
            "description": "The aggregated quantity, in the meter's base unit.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "service": {
            "description": "The service that emits the meter.",
            "readOnly": true,
            "type": "string"
          },
          "shadow_cost": {
            "$ref": "#/components/schemas/sylphx.billing.v1.Money",
            "description": "Sylphx's internal cost to serve, never billed. Returned only on GET/List\nto an authenticated org-wide platform seller operator holding billing:read\nand billing:operator:read; absent from customer responses. Unset without\na shadow price (internal Sandboxes classes rate at zero).",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.UsageReport": {
        "description": "A UsageReport is an org's usage summary for one billing period, rolled up\nper project, meter, and dimensions, with how complete it is. The id is the\nperiod, for example `orgs/{org}/usage_reports/2026-11`.",
        "properties": {
          "completeness": {
            "description": "The share of the period's usage that has reached Billing, from 0 to 1,\nfrom every emitter's watermark.",
            "readOnly": true,
            "type": "number"
          },
          "compute_time": {
            "description": "The instant the report reflects.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "invoice": {
            "description": "The period's invoice, once one exists.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "billing.sylphx.com/Invoice"
          },
          "lines": {
            "description": "One line per project, meter, and dimension set.",
            "items": {
              "$ref": "#/components/schemas/sylphx.billing.v1.UsageLine"
            },
            "readOnly": true,
            "type": "array"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata.",
            "readOnly": true
          },
          "name": {
            "description": "`orgs/{org}/usage_reports/{YYYY-MM}`.",
            "type": "string"
          },
          "period_end_time": {
            "description": "The end of the period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "period_start_time": {
            "description": "The start of the period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`usr_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          },
          "watermarks": {
            "additionalProperties": {
              "format": "date-time",
              "type": "string"
            },
            "description": "Each emitting service's watermark: the time of the oldest usage it has\nnot yet delivered.",
            "readOnly": true,
            "type": "object"
          }
        },
        "type": "object"
      },
      "sylphx.billing.v1.UsageRow": {
        "description": "UsageRow is one bucket of a usage query.",
        "properties": {
          "dimensions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The dimensions grouped on.",
            "readOnly": true,
            "type": "object"
          },
          "end_time": {
            "description": "The end of the bucket.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "meter": {
            "description": "The meter id.",
            "readOnly": true,
            "type": "string"
          },
          "project": {
            "description": "The project, when grouped by project.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Project"
          },
          "quantity": {
            "description": "The aggregated quantity, in the meter's base unit.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "service": {
            "description": "The service that emits the meter.",
            "readOnly": true,
            "type": "string"
          },
          "start_time": {
            "description": "The start of the bucket.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.broker.v1.CreateTrustPolicyRequest": {
        "description": "The request of CreateTrustPolicy.",
        "properties": {
          "parent": {
            "description": "The org to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "broker.sylphx.com/TrustPolicy"
          },
          "trust_policy": {
            "$ref": "#/components/schemas/sylphx.broker.v1.TrustPolicy",
            "description": "The trust policy to create; only spec and caller-writable metadata are read."
          },
          "trust_policy_id": {
            "description": "The id of the new trust policy, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "trust_policy"
        ],
        "type": "object"
      },
      "sylphx.broker.v1.CredentialKind": {
        "description": "CredentialKind is what the Broker issues under a TrustPolicy.",
        "enum": [
          "access_token",
          "runner_registration"
        ],
        "type": "string"
      },
      "sylphx.broker.v1.DeleteTrustPolicyRequest": {
        "description": "The request of DeleteTrustPolicy.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the trust policy to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "broker.sylphx.com/TrustPolicy"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.broker.v1.ExchangeTokenRequest": {
        "description": "The request of ExchangeToken.",
        "properties": {
          "name": {
            "description": "The trust policy to exchange under.",
            "type": "string",
            "x-sylphx-resource-reference": "broker.sylphx.com/TrustPolicy"
          },
          "permissions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The permissions this call needs, at most the policy's; empty means the\npolicy's.",
            "type": "object"
          },
          "repositories": {
            "description": "The repositories this call needs, at most the policy's; empty means the\npolicy's.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "subject_token": {
            "description": "The caller's identity: a SPIFFE JWT-SVID or an Access-issued workload\nOIDC token, with audience `broker.sylphx.com`.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "ttl": {
            "description": "How long the credential should live, at most the policy's `max_ttl`.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "name",
          "subject_token"
        ],
        "type": "object"
      },
      "sylphx.broker.v1.ExchangeTokenResponse": {
        "description": "The response of ExchangeToken.",
        "properties": {
          "credential_kind": {
            "$ref": "#/components/schemas/sylphx.broker.v1.CredentialKind",
            "description": "What `token` is."
          },
          "expire_time": {
            "description": "When the credential stops working.",
            "format": "date-time",
            "type": "string"
          },
          "permissions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The permissions the credential carries.",
            "type": "object"
          },
          "repositories": {
            "description": "The repositories the credential covers; empty means every repository\nthe Connection covers.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "token": {
            "description": "The provider credential. Never logged, persisted, or cached by the\ncaller beyond `expire_time`.",
            "type": "string",
            "x-sylphx-sensitive": true
          }
        },
        "type": "object"
      },
      "sylphx.broker.v1.GetTrustPolicyRequest": {
        "description": "The request of GetTrustPolicy.",
        "properties": {
          "name": {
            "description": "The name of the trust policy to get.",
            "type": "string",
            "x-sylphx-resource-reference": "broker.sylphx.com/TrustPolicy"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.broker.v1.ListTrustPoliciesRequest": {
        "description": "The request of ListTrustPolicies.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The org to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "broker.sylphx.com/TrustPolicy"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.broker.v1.ListTrustPoliciesResponse": {
        "description": "The response of ListTrustPolicies.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "trust_policies": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.broker.v1.TrustPolicy"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.broker.v1.TrustPolicy": {
        "description": "A TrustPolicy grants a set of subjects the right to exchange their\nidentity for a provider credential on one Connection, never wider than\nthe policy's permissions and repositories.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/trust_policies/{trust_policy}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.broker.v1.TrustPolicySpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.broker.v1.TrustPolicyStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`trp_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.broker.v1.TrustPolicySpec": {
        "description": "TrustPolicySpec is the caller-writable state of a TrustPolicy.",
        "properties": {
          "connection": {
            "description": "The Connection credentials are issued on.",
            "type": "string",
            "x-sylphx-resource-reference": "connections.sylphx.com/Connection"
          },
          "credential_kind": {
            "$ref": "#/components/schemas/sylphx.broker.v1.CredentialKind",
            "description": "What the credential service issues."
          },
          "max_ttl": {
            "description": "The longest a credential lives; default and maximum 1 hour.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "permissions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The most a credential may carry, in the provider's permission names, for\nexample `{\"contents\": \"read\", \"checks\": \"write\"}`.",
            "type": "object"
          },
          "repositories": {
            "description": "The most repositories a credential may cover; empty means every\nrepository the Connection covers.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "subjects": {
            "description": "The identities allowed to exchange: SPIFFE ids\n(`spiffe://<trust-domain>/cell/<cell>/role/<role>`, `*` matching one\nsegment) or Sylphx Access principal names. The cell segment is never\nstripped.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "connection",
          "subjects",
          "permissions",
          "credential_kind"
        ],
        "type": "object"
      },
      "sylphx.broker.v1.TrustPolicyStatus": {
        "description": "TrustPolicyStatus is the observed state of a TrustPolicy.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled. Ready is FALSE with reason\n`CapabilityMissing` when the Connection lacks a permission the policy\nnames.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.broker.v1.UpdateTrustPolicyRequest": {
        "description": "The request of UpdateTrustPolicy.",
        "properties": {
          "trust_policy": {
            "$ref": "#/components/schemas/sylphx.broker.v1.TrustPolicy",
            "description": "The trust policy to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "trust_policy"
        ],
        "type": "object"
      },
      "sylphx.build.v1.Build": {
        "description": "A Build runs one command or builds one image over one input. The input is\na commit (read through the Broker at that exact commit) or a tree uploaded\nto the org's store; the output is the command's exit code and named\nartifacts, or an image with an SBOM and signed provenance. A Build is\nimmutable once created; it ends with its output or a typed failure.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/builds/{build}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`bld_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.build.v1.BuildArtifact": {
        "description": "BuildArtifact is one file a command kept.",
        "properties": {
          "digest": {
            "description": "The content digest, `<sha256 hex>/<size in bytes>`, in the org's store.",
            "readOnly": true,
            "type": "string"
          },
          "path": {
            "description": "The path relative to the input root.",
            "readOnly": true,
            "type": "string"
          },
          "size_bytes": {
            "description": "The size in bytes.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.build.v1.BuildCache": {
        "description": "A BuildCache is a per-project cache. It makes builds faster and never\nchanges their result; a missing or unreachable cache only slows a build.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/build_caches/{build_cache}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildCacheSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildCacheStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`bch_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.build.v1.BuildCacheAccess": {
        "description": "BuildCacheAccess is what a cache token may do. A token from an uploaded\ntree or a laptop writes only the `dev` scope.",
        "enum": [
          "read",
          "read_write"
        ],
        "type": "string"
      },
      "sylphx.build.v1.BuildCacheSpec": {
        "description": "BuildCacheSpec is the caller-writable state of a BuildCache.",
        "properties": {
          "retention": {
            "description": "Entries unused this long are evicted; default 7 days.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.build.v1.BuildCacheStatus": {
        "description": "BuildCacheStatus is the observed state of a BuildCache.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "last_use_time": {
            "description": "When a build last read the cache.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "size_bytes": {
            "description": "Bytes stored.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.build.v1.BuildFailure": {
        "description": "BuildFailure is the typed reason a Build ended without a result.",
        "enum": [
          "source_unavailable",
          "build_error",
          "no_capacity",
          "class_not_offered",
          "signing_unavailable",
          "timeout",
          "setup_failed"
        ],
        "type": "string"
      },
      "sylphx.build.v1.BuildImageRequest": {
        "description": "The request of BuildImage. Its options are the BuildSpec's, by the same\nnames.",
        "properties": {
          "allow_hosts": {
            "description": "Internet hosts the build may reach; empty means in-cell only.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "build_id": {
            "description": "The id segment of the Build's name; the server assigns one when unset.",
            "type": "string"
          },
          "cache": {
            "description": "The BuildCache to use; default the project's `default` cache.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/BuildCache"
          },
          "image": {
            "$ref": "#/components/schemas/sylphx.build.v1.ImageTarget",
            "description": "The image to build."
          },
          "parent": {
            "description": "The project to build in.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/Build"
          },
          "size": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildSize",
            "description": "The machine size; default `[build] size`, else STANDARD."
          },
          "source": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildSource",
            "description": "A commit, read through the Broker at that exact commit."
          },
          "timeout": {
            "description": "The time limit; default 1 hour.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "tree": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildTree",
            "description": "An uploaded tree."
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.build.v1.BuildLogLine": {
        "description": "BuildLogLine is one line of a build's log.",
        "properties": {
          "stream": {
            "description": "`stdout` or `stderr`.",
            "readOnly": true,
            "type": "string"
          },
          "text": {
            "description": "The line, without its trailing newline.",
            "readOnly": true,
            "type": "string"
          },
          "write_time": {
            "description": "When the line was written.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.build.v1.BuildOutput": {
        "description": "BuildOutput is what a Build wrote to Kernel Artifacts, by digest: the\nimage fields for an image, `exit_code` and `artifacts` for a command.",
        "properties": {
          "artifact": {
            "description": "The artifact in Sylphx Artifacts that holds the three.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "artifacts.sylphx.com/Artifact"
          },
          "artifacts": {
            "description": "The files the command's `artifacts` globs matched, by digest.",
            "items": {
              "$ref": "#/components/schemas/sylphx.build.v1.BuildArtifact"
            },
            "readOnly": true,
            "type": "array"
          },
          "exit_code": {
            "description": "The command's own exit code.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "image": {
            "description": "The image reference: `registry.sylphx.net/<path>@sha256:<hex>`.",
            "readOnly": true,
            "type": "string"
          },
          "image_digest": {
            "description": "The image manifest digest.",
            "readOnly": true,
            "type": "string"
          },
          "provenance_digest": {
            "description": "The signed SLSA provenance Artifact digest.",
            "readOnly": true,
            "type": "string"
          },
          "sbom_digest": {
            "description": "The SBOM Artifact digest.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.build.v1.BuildSize": {
        "description": "BuildSize is the machine a build runs on.",
        "enum": [
          "standard",
          "large",
          "xlarge"
        ],
        "type": "string"
      },
      "sylphx.build.v1.BuildSource": {
        "description": "BuildSource is the exact source a Build reads, fetched at `commit`\nthrough a Broker-minted token narrowed to the repository; never from a\nwebhook payload.",
        "properties": {
          "commit": {
            "description": "The full commit SHA to build.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "root_directory": {
            "description": "The directory inside the repository to build; default the root.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "source_link": {
            "description": "The Hosting SourceLink naming the repository and its Connection.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "hosting.sylphx.com/SourceLink"
          }
        },
        "required": [
          "source_link",
          "commit"
        ],
        "type": "object"
      },
      "sylphx.build.v1.BuildSpec": {
        "description": "BuildSpec is the caller-writable state of a Build: one input, one output.",
        "properties": {
          "allow_hosts": {
            "description": "Internet hosts the build may reach. Empty means in-cell only: the\nmirrors and the store. Default `[build] allow_hosts`.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "cache": {
            "description": "The BuildCache to read and write; default the project's `default` cache.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "build.sylphx.com/BuildCache"
          },
          "command": {
            "$ref": "#/components/schemas/sylphx.build.v1.CommandTarget",
            "description": "One command's exit code and the artifacts it names.",
            "x-sylphx-immutable": true
          },
          "image": {
            "$ref": "#/components/schemas/sylphx.build.v1.ImageTarget",
            "description": "An OCI image with an SBOM and signed provenance.",
            "x-sylphx-immutable": true
          },
          "size": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildSize",
            "description": "The machine size; default `[build] size`, else STANDARD.",
            "x-sylphx-immutable": true
          },
          "source": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildSource",
            "description": "A commit, read through the Broker at that exact commit.",
            "x-sylphx-immutable": true
          },
          "timeout": {
            "description": "The time limit; default 1 hour, at most 6 hours. A command that reaches\nit is killed and the Build ends with BUILD_FAILURE_TIMEOUT.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "tree": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildTree",
            "description": "A tree uploaded to the org's store, by its root digest.",
            "x-sylphx-immutable": true
          }
        },
        "type": "object"
      },
      "sylphx.build.v1.BuildState": {
        "description": "BuildState is the lifecycle of a Build.",
        "enum": [
          "queued",
          "running",
          "succeeded",
          "failed",
          "cancelled"
        ],
        "type": "string"
      },
      "sylphx.build.v1.BuildStatus": {
        "description": "BuildStatus is the observed state of a Build.",
        "properties": {
          "bytes_up": {
            "description": "Bytes the client uploaded for this build: the blobs of the tree the\norg's store lacked.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "end_time": {
            "description": "When the build reached a final state.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "failure": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildFailure",
            "description": "Why the build failed, when `state` is FAILED.",
            "readOnly": true
          },
          "lease": {
            "description": "The Sandboxes lease the build ran on.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "log_uri": {
            "description": "Where the build log is read, through Observability.",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "output": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildOutput",
            "description": "The result: an image when `state` is SUCCEEDED; for a command, set\nwhenever the command ran, whatever its exit code.",
            "readOnly": true
          },
          "start_time": {
            "description": "When the build started running.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildState",
            "description": "The lifecycle state.",
            "readOnly": true
          },
          "workspace": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildWorkspace",
            "description": "Whether the build took a warm workspace of the same repository.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.build.v1.BuildTree": {
        "description": "BuildTree is a tree uploaded to the org's store: the REAPI v2 `Directory`\nlayout, identified by the digest of its root. The client uploads only the\nblobs the store lacks.",
        "properties": {
          "root_digest": {
            "description": "The root `Directory` digest, `<sha256 hex>/<size in bytes>`.",
            "type": "string",
            "x-sylphx-immutable": true
          }
        },
        "required": [
          "root_digest"
        ],
        "type": "object"
      },
      "sylphx.build.v1.BuildWorkspace": {
        "description": "BuildWorkspace says whether a build started from a warm workspace.",
        "enum": [
          "warm",
          "cold"
        ],
        "type": "string"
      },
      "sylphx.build.v1.CancelBuildRequest": {
        "description": "The request of CancelBuild.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the build.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/Build"
          },
          "validate_only": {
            "description": "Validate without acting.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.build.v1.CommandTarget": {
        "description": "CommandTarget runs one command over the input, like the local command.",
        "properties": {
          "argv": {
            "description": "The program and its arguments. Use `[\"bash\", \"-lc\", \"…\"]` for a shell.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "artifacts": {
            "description": "Globs, relative to the input root, of files kept after the command ends,\nwhatever its exit code (test reports, coverage).",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-immutable": true
          }
        },
        "required": [
          "argv"
        ],
        "type": "object"
      },
      "sylphx.build.v1.CreateBuildRequest": {
        "description": "The request of CreateBuild.",
        "properties": {
          "build": {
            "$ref": "#/components/schemas/sylphx.build.v1.Build",
            "description": "The build to create; only spec and caller-writable metadata are\nread."
          },
          "build_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/Build"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "build"
        ],
        "type": "object"
      },
      "sylphx.build.v1.DeleteBuildCacheRequest": {
        "description": "The request of DeleteBuildCache.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the build cache to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/BuildCache"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.build.v1.GetBuildCacheRequest": {
        "description": "The request of GetBuildCache.",
        "properties": {
          "name": {
            "description": "The name of the build cache to get.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/BuildCache"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.build.v1.GetBuildRequest": {
        "description": "The request of GetBuild.",
        "properties": {
          "name": {
            "description": "The name of the build to get.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/Build"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.build.v1.ImageTarget": {
        "description": "ImageTarget builds an OCI image.",
        "properties": {
          "build_args": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Build arguments. Secret values bind through `[build.secrets]`, never here.",
            "type": "object",
            "x-sylphx-immutable": true
          },
          "dockerfile": {
            "description": "A Dockerfile path relative to the input root; unset lets the zero-config\nfrontend detect the stack.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "service": {
            "description": "The `sylphx.toml` service whose `dockerfile` and `context` apply; unset\nreads the fields below or lets the zero-config frontend detect the stack.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "target": {
            "description": "The Dockerfile stage to build.",
            "type": "string",
            "x-sylphx-immutable": true
          }
        },
        "type": "object"
      },
      "sylphx.build.v1.ListBuildCachesRequest": {
        "description": "The request of ListBuildCaches.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/BuildCache"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.build.v1.ListBuildCachesResponse": {
        "description": "The response of ListBuildCaches.",
        "properties": {
          "build_caches": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.build.v1.BuildCache"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.build.v1.ListBuildsRequest": {
        "description": "The request of ListBuilds.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/Build"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.build.v1.ListBuildsResponse": {
        "description": "The response of ListBuilds.",
        "properties": {
          "builds": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.build.v1.Build"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.build.v1.MintBuildCacheEnvRequest": {
        "description": "The request of MintBuildCacheEnv.",
        "properties": {
          "access": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildCacheAccess",
            "description": "What the token may do; default READ."
          },
          "name": {
            "description": "The name of the build cache.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/BuildCache"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.build.v1.MintBuildCacheEnvResponse": {
        "description": "The response of MintBuildCacheEnv: what a build that runs elsewhere sets\nto reach the cache.",
        "properties": {
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment variables by name: `SCCACHE_WEBDAV_ENDPOINT`,\n`SCCACHE_WEBDAV_TOKEN`, `TURBO_API`, `TURBO_TEAM`, `TURBO_TOKEN`,\n`SYLPHX_CRATES_MIRROR`.",
            "type": "object",
            "x-sylphx-sensitive": true
          },
          "expire_time": {
            "description": "When the token in `env` stops verifying.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.build.v1.PurgeBuildCacheRequest": {
        "description": "The request of PurgeBuildCache.",
        "properties": {
          "etag": {
            "description": "Purge only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the build cache to empty.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/BuildCache"
          },
          "validate_only": {
            "description": "Validate without purging anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.build.v1.ReadBuildLogsRequest": {
        "description": "The request of ReadBuildLogs.",
        "properties": {
          "name": {
            "description": "The name of the build.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/Build"
          },
          "page_size": {
            "description": "At most this many lines; default 500, clamped to 5000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "wait": {
            "description": "On a running build, wait up to this long (at most 30s) for new lines\nbefore returning an empty page.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.build.v1.ReadBuildLogsResponse": {
        "description": "The response of ReadBuildLogs.",
        "properties": {
          "lines": {
            "description": "The page, oldest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.build.v1.BuildLogLine"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page. It is set while the build can still write,\nso a follower keeps polling; empty once the build is final and every\nline was read.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.build.v1.RunBuildRequest": {
        "description": "The request of RunBuild. Its options are the BuildSpec's, by the same\nnames.",
        "properties": {
          "allow_hosts": {
            "description": "Internet hosts the command may reach; empty means in-cell only.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "artifacts": {
            "description": "Globs of files kept after the command ends, whatever its exit code.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "build_id": {
            "description": "The id segment of the Build's name; the server assigns one when unset.",
            "type": "string"
          },
          "cache": {
            "description": "The BuildCache to use; default the project's `default` cache.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/BuildCache"
          },
          "command": {
            "description": "The program and its arguments.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "parent": {
            "description": "The project to run in.",
            "type": "string",
            "x-sylphx-resource-reference": "build.sylphx.com/Build"
          },
          "size": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildSize",
            "description": "The machine size; default `[build] size`, else STANDARD."
          },
          "timeout": {
            "description": "The time limit; default 1 hour.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "tree": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildTree",
            "description": "The uploaded tree to run over."
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "tree",
          "command"
        ],
        "type": "object"
      },
      "sylphx.build.v1.UpdateBuildCacheRequest": {
        "description": "The request of UpdateBuildCache.",
        "properties": {
          "allow_missing": {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "build_cache": {
            "$ref": "#/components/schemas/sylphx.build.v1.BuildCache",
            "description": "The build cache to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "build_cache"
        ],
        "type": "object"
      },
      "sylphx.common.v1.Condition": {
        "description": "Condition is one observation a controller makes about a Resource\n(kstatus: `Ready`, `Reconciling`, `Stalled`). A Resource is settled when\n`status.observed_generation == meta.generation` and `Reconciling` is not\nTRUE; it is healthy when settled and `Ready` is TRUE.",
        "properties": {
          "message": {
            "description": "A customer-safe human-readable message.",
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this observation was made against.",
            "format": "int64",
            "type": "string"
          },
          "reason": {
            "description": "A machine-readable UpperCamelCase reason.",
            "type": "string"
          },
          "severity": {
            "$ref": "#/components/schemas/sylphx.common.v1.Severity",
            "description": "How severe a FALSE condition is."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.common.v1.ConditionStatus",
            "description": "Whether the condition holds."
          },
          "transition_time": {
            "description": "When `status` last changed.",
            "format": "date-time",
            "type": "string"
          },
          "type": {
            "description": "The condition type, for example `Ready`.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.common.v1.ConditionStatus": {
        "description": "ConditionStatus is the truth value of a Condition.",
        "enum": [
          "true",
          "false",
          "unknown"
        ],
        "type": "string"
      },
      "sylphx.common.v1.EntitlementDenial": {
        "description": "EntitlementDenial is the detail of `PLAN_LIMIT_REACHED` and\n`SPEND_LIMIT_REACHED` (metering.md §9.3).",
        "properties": {
          "limit": {
            "description": "The limit in the meter's unit.",
            "format": "int64",
            "type": "string"
          },
          "meter": {
            "description": "The meter that hit its limit.",
            "type": "string"
          },
          "plan": {
            "description": "The org's plan.",
            "type": "string"
          },
          "upgrade_url": {
            "description": "Where the org can raise the limit.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.common.v1.ErrorCode": {
        "description": "ErrorCode is the registry of error codes (§6.3 rule 5). A method lists the\ncodes it may return in `(sylphx.common.v1.method).errors`, without the\n`ERROR_CODE_` prefix. Adding a code is additive; removing one is breaking.",
        "enum": [
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "ETAG_MISMATCH",
          "RESOURCE_NOT_FOUND",
          "RESOURCE_ALREADY_EXISTS",
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "DELETION_PROTECTED",
          "RECONCILE_FAILED",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED",
          "RATE_LIMITED",
          "INVALID_STATE",
          "INTERNAL",
          "UNAVAILABLE",
          "UNIMPLEMENTED",
          "NOT_YET_PROPAGATED",
          "DEADLINE_EXCEEDED",
          "NOT_FOUND",
          "CONTRACT_SKEW",
          "NO_CAPACITY",
          "SHAPE_NOT_OFFERED",
          "STALE_GENERATION",
          "RESOURCE_IN_USE",
          "CONTROL_HELD",
          "CONTROL_HELD_BY_HUMAN",
          "INVALID_ID",
          "ETAG_CONFLICT",
          "VALIDATE_ONLY_NOT_SUPPORTED",
          "ID_MOVED"
        ],
        "type": "string"
      },
      "sylphx.common.v1.ErrorEffect": {
        "description": "ErrorEffect says what a failed call committed (standards/dx.md \"retry and\neffect status\").",
        "enum": [
          "none",
          "applied",
          "unknown"
        ],
        "type": "string"
      },
      "sylphx.common.v1.Operation": {
        "description": "Operation is the wire shape of a long-running operation\n(resource-api-and-clients.md §3.9, AIP-151).\n\nIn the schema, a long-running method returns `google.longrunning.Operation`\nwith `google.longrunning.operation_info`, so the AIP linter can check it;\non the wire, and in every generated client, that return type is this\nmessage. An Operation of a reconciled Resource is a view, not a second\nstate machine: it is `done` when the target's `observed_generation` reaches\n`target_generation` and `Reconciling` is not TRUE.",
        "properties": {
          "create_time": {
            "description": "When the Operation started.",
            "format": "date-time",
            "type": "string"
          },
          "custom_verb": {
            "description": "The custom method verb when `verb` is CUSTOM, for example `revoke`.",
            "type": "string"
          },
          "done": {
            "description": "Whether the Operation has finished.",
            "type": "boolean"
          },
          "end_time": {
            "description": "When the Operation finished.",
            "format": "date-time",
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/sylphx.common.v1.ProblemDetails",
            "description": "The failure, as the one error body."
          },
          "name": {
            "description": "`{parent-of-target}/operations/{operation}`.",
            "type": "string"
          },
          "progress": {
            "$ref": "#/components/schemas/sylphx.common.v1.OperationProgress",
            "description": "Progress while not `done`."
          },
          "response": {
            "additionalProperties": true,
            "description": "The settled Resource (or Empty for a delete).",
            "properties": {
              "@type": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "target": {
            "description": "The name of the Resource being changed.",
            "type": "string"
          },
          "target_generation": {
            "description": "The generation this Operation waits for.",
            "format": "int64",
            "type": "string"
          },
          "verb": {
            "$ref": "#/components/schemas/sylphx.common.v1.OperationVerb",
            "description": "What the Operation does."
          }
        },
        "type": "object"
      },
      "sylphx.common.v1.OperationProgress": {
        "description": "OperationProgress is the progress of an Operation that is not done. It is\nalso the `metadata_type` of every long-running method.",
        "properties": {
          "conditions": {
            "description": "The target's conditions when this progress was read.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "type": "array"
          },
          "message": {
            "description": "A customer-safe progress message.",
            "type": "string"
          },
          "percent": {
            "description": "Percent complete, when the controller can tell.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.common.v1.OperationVerb": {
        "description": "OperationVerb is the kind of change an Operation carries.",
        "enum": [
          "create",
          "update",
          "delete",
          "custom"
        ],
        "type": "string"
      },
      "sylphx.common.v1.PreconditionFailure": {
        "description": "PreconditionFailure is the detail of `ETAG_MISMATCH`.",
        "properties": {
          "current_etag": {
            "description": "The Resource's current etag, so the client can re-read and retry.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.common.v1.ProblemDetails": {
        "description": "ProblemDetails is the one error body of every method and service\n(resource-api-and-clients.md §3.8): RFC 9457 problem details served as\n`application/problem+json`.",
        "properties": {
          "code": {
            "description": "The stable UPPER_SNAKE code, one of ErrorCode without its prefix.",
            "type": "string"
          },
          "detail": {
            "description": "A customer-safe explanation of this occurrence. Never contains SQL, stack\ntraces, internal hostnames, or another tenant's data.",
            "type": "string"
          },
          "details": {
            "description": "Typed details such as PreconditionFailure or EntitlementDenial.",
            "items": {
              "additionalProperties": true,
              "properties": {
                "@type": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "effect": {
            "$ref": "#/components/schemas/sylphx.common.v1.ErrorEffect",
            "description": "What the failed call committed."
          },
          "grpc_status": {
            "description": "One of the 16 canonical gRPC status names, for example `ABORTED`.",
            "type": "string"
          },
          "instance": {
            "description": "The request id (`Sylphx-Request-Id`).",
            "type": "string"
          },
          "retry_after_ms": {
            "description": "How long to wait before retrying, when the server knows.",
            "format": "int64",
            "type": "string"
          },
          "retryable": {
            "description": "Whether the same request may be retried.",
            "type": "boolean"
          },
          "status": {
            "description": "The HTTP status, fixed by `grpc_status`.",
            "format": "int32",
            "type": "integer"
          },
          "title": {
            "description": "A short customer-safe summary of the problem class.",
            "type": "string"
          },
          "type": {
            "description": "`https://sylphx.com/docs/errors/<code in kebab-case>`.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.common.v1.ResourceMeta": {
        "description": "ResourceMeta is the metadata every Resource carries in field 3.",
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Caller-writable, unindexed annotations.",
            "type": "object"
          },
          "create_time": {
            "description": "When the Resource was created.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "creator": {
            "description": "The principal that created the Resource.",
            "readOnly": true,
            "type": "string"
          },
          "delete_time": {
            "description": "Set while the Resource is being deleted.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "display_name": {
            "description": "Caller-writable human-readable name.",
            "type": "string"
          },
          "etag": {
            "description": "Strong ETag (AIP-154): changes on any change to spec, status, or\nmetadata. Send it back as `If-Match` or `etag` to make Update and Delete\nconditional; a mismatch fails with ABORTED / 409 `ETAG_MISMATCH`.",
            "readOnly": true,
            "type": "string"
          },
          "generation": {
            "description": "Increases by one on every change to `spec`.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Caller-writable, indexed labels (AIP-122 label rules).",
            "type": "object"
          },
          "update_time": {
            "description": "When the Resource last changed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.common.v1.Severity": {
        "description": "Severity grades a Condition that does not hold.",
        "enum": [
          "info",
          "warning",
          "error"
        ],
        "type": "string"
      },
      "sylphx.config.v1.ConditionOperator": {
        "description": "ConditionOperator is how a TargetingCondition compares. A missing\nattribute matches only NOT_CONTAINS, NOT_IN and NOT_IN_SEGMENT.",
        "enum": [
          "equals",
          "not_equals",
          "greater_than",
          "greater_or_equal",
          "less_than",
          "less_or_equal",
          "contains",
          "not_contains",
          "starts_with",
          "ends_with",
          "in",
          "not_in",
          "matches",
          "semver_greater_than",
          "semver_greater_or_equal",
          "semver_less_than",
          "semver_less_or_equal",
          "in_segment",
          "not_in_segment"
        ],
        "type": "string"
      },
      "sylphx.config.v1.ConfigChange": {
        "description": "A ConfigChange is one committed change to a flag or segment of an\nenvironment: the audit trail, kept after the flag or segment is deleted.",
        "properties": {
          "action": {
            "$ref": "#/components/schemas/sylphx.config.v1.ConfigChangeAction",
            "description": "What happened to it.",
            "readOnly": true
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata; `create_time` is when the change committed.",
            "readOnly": true
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/config_changes/{config_change}`;\nids sort in commit order.",
            "type": "string"
          },
          "origin_request_id": {
            "description": "The request that made it (`Sylphx-Request-Id`).",
            "readOnly": true,
            "type": "string"
          },
          "principal": {
            "description": "Who made it: `key:<key id>`, or `user:<id>` from the console.",
            "readOnly": true,
            "type": "string"
          },
          "spec": {
            "additionalProperties": true,
            "description": "The target's spec after the change, as JSON; empty for a delete.",
            "readOnly": true,
            "type": "object"
          },
          "target": {
            "description": "The flag or segment changed.",
            "readOnly": true,
            "type": "string"
          },
          "target_generation": {
            "description": "The target's generation after the change.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`chg_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.config.v1.ConfigChangeAction": {
        "description": "ConfigChangeAction is what a ConfigChange did.",
        "enum": [
          "create",
          "update",
          "delete"
        ],
        "type": "string"
      },
      "sylphx.config.v1.ConfigFlag": {
        "description": "A ConfigFlag is one typed configuration value or feature flag of an\nenvironment: a default, targeting rules, and percentage rollouts.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/config_flags/{config_flag}`;\nthe id is the key evaluators ask for.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.config.v1.ConfigFlagSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.config.v1.ConfigFlagStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`cfg_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.config.v1.ConfigFlagEvaluation": {
        "description": "ConfigFlagEvaluation is one flag's value for one context.",
        "properties": {
          "config_flag": {
            "description": "The flag's id.",
            "type": "string"
          },
          "reason": {
            "$ref": "#/components/schemas/sylphx.config.v1.EvaluationReason",
            "description": "Why this value."
          },
          "rule_index": {
            "description": "The index in `spec.rules` of the rule that matched, for TARGETING_MATCH\nand SPLIT.",
            "format": "int32",
            "type": "integer"
          },
          "value": {
            "description": "The value; null when the flag does not exist."
          }
        },
        "type": "object"
      },
      "sylphx.config.v1.ConfigFlagSpec": {
        "description": "ConfigFlagSpec is the caller-writable state of a ConfigFlag.",
        "properties": {
          "client_visible": {
            "description": "Publishable keys (browsers, mobile apps) may evaluate it with\n`config_flags:evaluate`; default false, so a server-only flag's value\nnever reaches a device. Secret keys evaluate every flag.",
            "type": "boolean"
          },
          "default_value": {
            "description": "The value when no rule matches, or when the flag is disabled."
          },
          "description": {
            "description": "What the flag is for.",
            "type": "string"
          },
          "enabled": {
            "description": "When false, every evaluation returns `default_value` and the rules are\nskipped: a kill switch. Default true.",
            "type": "boolean"
          },
          "rules": {
            "description": "Targeting rules, first match wins.",
            "items": {
              "$ref": "#/components/schemas/sylphx.config.v1.TargetingRule"
            },
            "type": "array"
          },
          "value_type": {
            "$ref": "#/components/schemas/sylphx.config.v1.ConfigValueType",
            "description": "The type every value of the flag has.",
            "x-sylphx-immutable": true
          }
        },
        "required": [
          "value_type",
          "default_value"
        ],
        "type": "object"
      },
      "sylphx.config.v1.ConfigFlagStatus": {
        "description": "ConfigFlagStatus is the observed state of a ConfigFlag.",
        "properties": {
          "cell_count": {
            "description": "How many cells the environment spans.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled. Reconciling while a change rolls out in\nwaves; Stalled when a wave's health gate fails and the change halts.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "updated_cell_count": {
            "description": "How many cells serve the current generation.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "wave": {
            "description": "The wave the current change has reached, from 1.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "wave_count": {
            "description": "How many waves the change takes.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.config.v1.ConfigSegment": {
        "description": "A ConfigSegment is a reusable audience of an environment: subjects listed\nby id, and conditions over the evaluation context. Flag rules refer to it\nwith IN_SEGMENT, so one change to the audience reaches every flag.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/config_segments/{config_segment}`;\nthe id is what IN_SEGMENT names.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.config.v1.ConfigSegmentSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.config.v1.ConfigSegmentStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`seg_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.config.v1.ConfigSegmentSpec": {
        "description": "ConfigSegmentSpec is who is in a segment: `excluded` never; `included`\nalways; otherwise an evaluation whose conditions all hold. A segment\nwithout conditions holds only its `included` subjects.",
        "properties": {
          "conditions": {
            "description": "Conditions over the evaluation context; all must hold.",
            "items": {
              "$ref": "#/components/schemas/sylphx.config.v1.TargetingCondition"
            },
            "type": "array"
          },
          "description": {
            "description": "Who the segment is.",
            "type": "string"
          },
          "excluded": {
            "description": "Subjects never in the segment, whatever else holds.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "included": {
            "description": "Subjects always in the segment, by `user_id` or `anonymous_id`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.config.v1.ConfigSegmentStatus": {
        "description": "ConfigSegmentStatus is the observed state of a ConfigSegment.",
        "properties": {
          "conditions": {
            "description": "Ready.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.config.v1.ConfigValueType": {
        "description": "ConfigValueType is the type of a ConfigFlag's values.",
        "enum": [
          "bool",
          "string",
          "int64",
          "double",
          "json"
        ],
        "type": "string"
      },
      "sylphx.config.v1.CreateConfigFlagRequest": {
        "description": "The request of CreateConfigFlag.",
        "properties": {
          "config_flag": {
            "$ref": "#/components/schemas/sylphx.config.v1.ConfigFlag",
            "description": "The config flag to create; only spec and caller-writable metadata are read."
          },
          "config_flag_id": {
            "description": "The id of the new config flag, the key evaluators ask for; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "config.sylphx.com/ConfigFlag"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "config_flag"
        ],
        "type": "object"
      },
      "sylphx.config.v1.CreateConfigSegmentRequest": {
        "description": "The request of CreateConfigSegment.",
        "properties": {
          "config_segment": {
            "$ref": "#/components/schemas/sylphx.config.v1.ConfigSegment",
            "description": "The config segment to create; only spec is read."
          },
          "config_segment_id": {
            "description": "The id of the new config segment, what IN_SEGMENT names.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "config.sylphx.com/ConfigSegment"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "config_segment",
          "config_segment_id"
        ],
        "type": "object"
      },
      "sylphx.config.v1.DeleteConfigFlagRequest": {
        "description": "The request of DeleteConfigFlag.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the config flag to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "config.sylphx.com/ConfigFlag"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.config.v1.DeleteConfigSegmentRequest": {
        "description": "The request of DeleteConfigSegment.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the config segment to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "config.sylphx.com/ConfigSegment"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.config.v1.EvaluateConfigFlagsRequest": {
        "description": "The request of EvaluateConfigFlags.",
        "properties": {
          "config_flags": {
            "description": "The ids of the flags to evaluate; empty evaluates every flag of the\nenvironment. An unknown id answers reason NOT_FOUND.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "context": {
            "$ref": "#/components/schemas/sylphx.config.v1.EvaluationContext",
            "description": "Who and what the evaluation is for."
          },
          "parent": {
            "description": "The environment whose flags are evaluated.",
            "type": "string",
            "x-sylphx-resource-reference": "config.sylphx.com/ConfigFlag"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.config.v1.EvaluateConfigFlagsResponse": {
        "description": "The response of EvaluateConfigFlags.",
        "properties": {
          "evaluations": {
            "description": "One per requested flag, or per flag of the environment, by id.",
            "items": {
              "$ref": "#/components/schemas/sylphx.config.v1.ConfigFlagEvaluation"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.config.v1.EvaluationContext": {
        "description": "EvaluationContext is what targeting rules and percentages read.",
        "properties": {
          "anonymous_id": {
            "description": "A stable id of a device or visitor; the bucketing subject when there is\nno `user_id`.",
            "type": "string"
          },
          "attributes": {
            "additionalProperties": true,
            "description": "Anything else rules compare, for example `plan`, `country`,\n`app_version`.",
            "type": "object"
          },
          "user_id": {
            "description": "The signed-in user; the default bucketing subject.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.config.v1.EvaluationReason": {
        "description": "EvaluationReason is why an evaluation answered its value (OpenFeature's\nreasons).",
        "enum": [
          "targeting_match",
          "split",
          "default",
          "disabled",
          "not_found"
        ],
        "type": "string"
      },
      "sylphx.config.v1.GetConfigChangeRequest": {
        "description": "The request of GetConfigChange.",
        "properties": {
          "name": {
            "description": "The name of the config change to get.",
            "type": "string",
            "x-sylphx-resource-reference": "config.sylphx.com/ConfigChange"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.config.v1.GetConfigFlagRequest": {
        "description": "The request of GetConfigFlag.",
        "properties": {
          "name": {
            "description": "The name of the config flag to get.",
            "type": "string",
            "x-sylphx-resource-reference": "config.sylphx.com/ConfigFlag"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.config.v1.GetConfigSegmentRequest": {
        "description": "The request of GetConfigSegment.",
        "properties": {
          "name": {
            "description": "The name of the config segment to get.",
            "type": "string",
            "x-sylphx-resource-reference": "config.sylphx.com/ConfigSegment"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.config.v1.ListConfigChangesRequest": {
        "description": "The request of ListConfigChanges.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter; `target = \"<flag or segment name>\"` is supported.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "config.sylphx.com/ConfigChange"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.config.v1.ListConfigChangesResponse": {
        "description": "The response of ListConfigChanges, newest first.",
        "properties": {
          "config_changes": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.config.v1.ConfigChange"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.config.v1.ListConfigFlagsRequest": {
        "description": "The request of ListConfigFlags.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "config.sylphx.com/ConfigFlag"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.config.v1.ListConfigFlagsResponse": {
        "description": "The response of ListConfigFlags.",
        "properties": {
          "config_flags": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.config.v1.ConfigFlag"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.config.v1.ListConfigSegmentsRequest": {
        "description": "The request of ListConfigSegments.",
        "properties": {
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "config.sylphx.com/ConfigSegment"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.config.v1.ListConfigSegmentsResponse": {
        "description": "The response of ListConfigSegments.",
        "properties": {
          "config_segments": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.config.v1.ConfigSegment"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.config.v1.SnapshotConfigFlagsRequest": {
        "description": "The request of SnapshotConfigFlags.",
        "properties": {
          "if_none_match": {
            "description": "The `etag` of the snapshot the caller holds; unchanged answers\n`not_modified`.",
            "type": "string"
          },
          "parent": {
            "description": "The environment.",
            "type": "string",
            "x-sylphx-resource-reference": "config.sylphx.com/ConfigFlag"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.config.v1.SnapshotConfigFlagsResponse": {
        "description": "The response of SnapshotConfigFlags: an environment's whole ruleset, what\na local evaluator needs, at one version.",
        "properties": {
          "config_flags": {
            "description": "Every flag of the environment.",
            "items": {
              "$ref": "#/components/schemas/sylphx.config.v1.ConfigFlag"
            },
            "type": "array"
          },
          "config_segments": {
            "description": "Every segment of the environment.",
            "items": {
              "$ref": "#/components/schemas/sylphx.config.v1.ConfigSegment"
            },
            "type": "array"
          },
          "etag": {
            "description": "The version of this ruleset; changes with any flag or segment.",
            "type": "string"
          },
          "not_modified": {
            "description": "True when `if_none_match` is this ruleset's etag; nothing else is set\nthen.",
            "type": "boolean"
          },
          "poll_interval": {
            "description": "How long the caller waits before polling again.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.config.v1.TargetingCondition": {
        "description": "TargetingCondition compares one attribute of the evaluation context with a\nvalue. The public contract is structured rather than an expression\nlanguage (CEL): every SDK evaluates rules locally, and a small table of\noperators is the same in Rust, TypeScript and any later SDK without an\nexpression runtime in each; a write is checked field by field against the\nschema; a console and an agent edit fields, not source text; and\nevaluation cost is bounded by the rule's size, with no program to run.\nThe operators are the ones customers already used.",
        "properties": {
          "attribute": {
            "description": "`user_id`, `anonymous_id`, or a path into the context's `attributes`,\ndot-separated (`plan`, `device.os`). Required, except with IN_SEGMENT and\nNOT_IN_SEGMENT.",
            "type": "string"
          },
          "operator": {
            "$ref": "#/components/schemas/sylphx.config.v1.ConditionOperator",
            "description": "The comparison."
          },
          "value": {
            "description": "The value compared with; a list for IN and NOT_IN, a string for the\nstring, regular expression and semantic version operators."
          }
        },
        "required": [
          "operator",
          "value"
        ],
        "type": "object"
      },
      "sylphx.config.v1.TargetingRule": {
        "description": "TargetingRule serves a value to evaluations that match its conditions, to\na stable percentage of them.\n\nPercentages use one bucket per flag and evaluation subject: bucket =\nFNV-1a 32-bit of the UTF-8 string `{config_flag}:{subject}`, mod 100,\nwhere `{config_flag}` is the flag's id and `{subject}` the value of\n`bucket_attribute`. A rule matches when bucket < percentage. The bucket\ndoes not depend on the rule, so rules on the same attribute split\ncumulatively: 30/30/40 across three values is three rules at 30, 60 and\n100, and a subject keeps its bucket when the percentage grows.",
        "properties": {
          "bucket_attribute": {
            "description": "The context attribute hashed for the bucket: `user_id`, `anonymous_id`,\nor an attribute path; default `user_id`, else `anonymous_id`. An\nevaluation without it never matches a rule below 100 percent.",
            "type": "string"
          },
          "conditions": {
            "description": "Conditions over the evaluation context; all must hold. None matches\nevery evaluation.",
            "items": {
              "$ref": "#/components/schemas/sylphx.config.v1.TargetingCondition"
            },
            "type": "array"
          },
          "description": {
            "description": "What the rule is for.",
            "type": "string"
          },
          "percentage": {
            "description": "Serve `value` to evaluations whose bucket is below this, from 0 to 100;\ndefault 100. The rest fall through to the next rule.",
            "format": "int32",
            "type": "integer"
          },
          "value": {
            "description": "The value served when the rule matches; of the flag's type."
          }
        },
        "required": [
          "value"
        ],
        "type": "object"
      },
      "sylphx.config.v1.UpdateConfigFlagRequest": {
        "description": "The request of UpdateConfigFlag.",
        "properties": {
          "config_flag": {
            "$ref": "#/components/schemas/sylphx.config.v1.ConfigFlag",
            "description": "The config flag to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "config_flag"
        ],
        "type": "object"
      },
      "sylphx.config.v1.UpdateConfigSegmentRequest": {
        "description": "The request of UpdateConfigSegment.",
        "properties": {
          "config_segment": {
            "$ref": "#/components/schemas/sylphx.config.v1.ConfigSegment",
            "description": "The config segment to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "config_segment"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.Connection": {
        "description": "A Connection is one installation of a ConnectionProvider on a\nthird-party account, for example the *Sylphx* App installed on a GitHub\norganization. The Connections controller confirms it with the provider\nthrough the credential service before it is Ready.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/connections/{connection}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.connections.v1.ConnectionSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.connections.v1.ConnectionStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`cnx_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.ConnectionProvider": {
        "description": "A ConnectionProvider is a third-party integration an org operates, for\nexample the *Sylphx* GitHub App owned by `sylphx-platform`. Its signing key\nlives in Sylphx Keys and only the credential service uses it; its webhook\nsecret lives in Sylphx Secrets.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/connection_providers/{connection_provider}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.connections.v1.ConnectionProviderSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.connections.v1.ConnectionProviderStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`cnp_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.ConnectionProviderSpec": {
        "description": "ConnectionProviderSpec is the caller-writable state of a\nConnectionProvider.",
        "properties": {
          "github_app": {
            "$ref": "#/components/schemas/sylphx.connections.v1.GitHubAppConfig",
            "description": "A GitHub App."
          }
        },
        "type": "object"
      },
      "sylphx.connections.v1.ConnectionProviderStatus": {
        "description": "ConnectionProviderStatus is the observed state of a ConnectionProvider.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "connection_count": {
            "description": "How many active Connections the provider has.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "kind": {
            "description": "The provider's plugin kind, for example `github_app`.",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.connections.v1.ConnectionSpec": {
        "description": "ConnectionSpec is the caller-writable state of a Connection.",
        "properties": {
          "external_id": {
            "description": "The provider's id of the installation, for example a GitHub App\ninstallation id.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "provider": {
            "description": "The provider this is an installation of.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "connections.sylphx.com/ConnectionProvider"
          }
        },
        "required": [
          "provider",
          "external_id"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.ConnectionState": {
        "description": "ConnectionState is the lifecycle state of a Connection.",
        "enum": [
          "pending",
          "active",
          "suspended",
          "removed"
        ],
        "type": "string"
      },
      "sylphx.connections.v1.ConnectionStatus": {
        "description": "ConnectionStatus is the observed state of a Connection, as last read back\nfrom the provider.",
        "properties": {
          "account": {
            "$ref": "#/components/schemas/sylphx.connections.v1.ExternalAccount",
            "description": "The third-party account the provider is installed on.",
            "readOnly": true
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "events": {
            "description": "The webhook events the installation delivers.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "install_time": {
            "description": "When the provider says the installation was created.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "permissions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The permissions the account granted, for example\n`{\"contents\": \"read\"}`.",
            "readOnly": true,
            "type": "object"
          },
          "repository_selection": {
            "$ref": "#/components/schemas/sylphx.connections.v1.RepositorySelection",
            "description": "Whether the installation covers every repository or a selection.",
            "readOnly": true
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.connections.v1.ConnectionState",
            "description": "The installation's lifecycle state.",
            "readOnly": true
          },
          "suspend_time": {
            "description": "When the provider suspended the installation.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "verify_time": {
            "description": "When the status was last read back from the provider.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.connections.v1.CreateConnectionProviderRequest": {
        "description": "The request of CreateConnectionProvider.",
        "properties": {
          "connection_provider": {
            "$ref": "#/components/schemas/sylphx.connections.v1.ConnectionProvider",
            "description": "The connection provider to create; only spec and caller-writable metadata are read."
          },
          "connection_provider_id": {
            "description": "The id of the new connection provider, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The org to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "connections.sylphx.com/ConnectionProvider"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "connection_provider"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.CreateConnectionRequest": {
        "description": "The request of CreateConnection.",
        "properties": {
          "connection": {
            "$ref": "#/components/schemas/sylphx.connections.v1.Connection",
            "description": "The connection to create; only spec and caller-writable metadata are read."
          },
          "connection_id": {
            "description": "The id of the new connection, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The org to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "connections.sylphx.com/Connection"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "connection"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.DeleteConnectionProviderRequest": {
        "description": "The request of DeleteConnectionProvider.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete every child Resource; without it a parent with children\nfails with FAILED_PRECONDITION.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the connection provider to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "connections.sylphx.com/ConnectionProvider"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.DeleteConnectionRequest": {
        "description": "The request of DeleteConnection.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the connection to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "connections.sylphx.com/Connection"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.ExternalAccount": {
        "description": "ExternalAccount is the third-party account an installation lives on.",
        "properties": {
          "external_id": {
            "description": "The provider's id of the account.",
            "readOnly": true,
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.connections.v1.ExternalAccountKind",
            "description": "Whether the account is a person or an organization.",
            "readOnly": true
          },
          "login": {
            "description": "The account's login, for example `SylphxAI`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.connections.v1.ExternalAccountKind": {
        "description": "ExternalAccountKind is the kind of a third-party account.",
        "enum": [
          "user",
          "organization"
        ],
        "type": "string"
      },
      "sylphx.connections.v1.GetConnectionProviderRequest": {
        "description": "The request of GetConnectionProvider.",
        "properties": {
          "name": {
            "description": "The name of the connection provider to get.",
            "type": "string",
            "x-sylphx-resource-reference": "connections.sylphx.com/ConnectionProvider"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.GetConnectionRequest": {
        "description": "The request of GetConnection.",
        "properties": {
          "name": {
            "description": "The name of the connection to get.",
            "type": "string",
            "x-sylphx-resource-reference": "connections.sylphx.com/Connection"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.GitHubAppConfig": {
        "description": "GitHubAppConfig configures the GitHub App provider plugin.",
        "properties": {
          "app_id": {
            "description": "The App's numeric id.",
            "format": "int64",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "client_id": {
            "description": "The App's OAuth client id.",
            "type": "string"
          },
          "signing_key": {
            "description": "The imported, non-exportable SIGN Key (RS256) that signs App\nassertions; only the credential service may use it.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/Key"
          },
          "slug": {
            "description": "The App's slug, for example `sylphx`.",
            "type": "string"
          },
          "webhook_secret": {
            "description": "The Secret holding the webhook secret that verifies deliveries.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/Secret"
          }
        },
        "required": [
          "app_id",
          "slug",
          "signing_key"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.ListConnectionProvidersRequest": {
        "description": "The request of ListConnectionProviders.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The org to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "connections.sylphx.com/ConnectionProvider"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.ListConnectionProvidersResponse": {
        "description": "The response of ListConnectionProviders.",
        "properties": {
          "connection_providers": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.connections.v1.ConnectionProvider"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.connections.v1.ListConnectionsRequest": {
        "description": "The request of ListConnections.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The org to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "connections.sylphx.com/Connection"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.ListConnectionsResponse": {
        "description": "The response of ListConnections.",
        "properties": {
          "connections": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.connections.v1.Connection"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.connections.v1.RepositorySelection": {
        "description": "RepositorySelection is which repositories an installation covers.",
        "enum": [
          "all",
          "selected"
        ],
        "type": "string"
      },
      "sylphx.connections.v1.UpdateConnectionProviderRequest": {
        "description": "The request of UpdateConnectionProvider.",
        "properties": {
          "connection_provider": {
            "$ref": "#/components/schemas/sylphx.connections.v1.ConnectionProvider",
            "description": "The connection provider to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "connection_provider"
        ],
        "type": "object"
      },
      "sylphx.connections.v1.UpdateConnectionRequest": {
        "description": "The request of UpdateConnection.",
        "properties": {
          "connection": {
            "$ref": "#/components/schemas/sylphx.connections.v1.Connection",
            "description": "The connection to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "connection"
        ],
        "type": "object"
      },
      "sylphx.data.v1.Bucket": {
        "description": "A Bucket is one customer object store: bytes, size, and SHA-256 kept exact,\nwith versions, delete markers, retention, multipart, and per-object\nvisibility (private by default). Silo: each has its own engine, credentials,\nbackup, region, and deletion.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/buckets/{bucket}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.data.v1.BucketSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.data.v1.BucketStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`bkt_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.data.v1.BucketSpec": {
        "description": "BucketSpec is the caller-writable state of a Bucket.",
        "properties": {
          "deletion_protection": {
            "description": "While set, Delete fails with DELETION_PROTECTED.",
            "type": "boolean"
          },
          "region": {
            "description": "The region; default the project's home region. Changing it moves the data\nby signed export and import.",
            "type": "string"
          },
          "retention": {
            "description": "Versions are kept at least this long; unset keeps no minimum.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "versioning_enabled": {
            "description": "Keep every version and write delete markers.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.BucketStatus": {
        "description": "BucketStatus is the observed state of a Bucket.",
        "properties": {
          "cell": {
            "description": "The cell the datastore is placed on.",
            "readOnly": true,
            "type": "string"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "host": {
            "description": "The object endpoint host.",
            "readOnly": true,
            "type": "string"
          },
          "object_count": {
            "description": "Current objects, at the last usage sample.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "ref": {
            "description": "The routing ref: the first DNS label of the datastore's endpoint.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.data.v1.DatastoreState",
            "description": "Serving state.",
            "readOnly": true
          },
          "storage_bytes": {
            "description": "Bytes stored, at the last usage sample.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ConnectBucketRequest": {
        "description": "The request of ConnectBucket.",
        "properties": {
          "name": {
            "description": "The name of the bucket.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/Bucket"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ConnectBucketResponse": {
        "description": "The response of ConnectBucket.",
        "properties": {
          "connection_info": {
            "$ref": "#/components/schemas/sylphx.data.v1.ConnectionInfo",
            "description": "How to connect."
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ConnectDatabaseRequest": {
        "description": "The request of ConnectDatabase.",
        "properties": {
          "name": {
            "description": "The name of the database.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/Database"
          },
          "profile": {
            "$ref": "#/components/schemas/sylphx.data.v1.ConnectionProfile",
            "description": "POOLED (default) or DIRECT."
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ConnectDatabaseResponse": {
        "description": "The response of ConnectDatabase.",
        "properties": {
          "connection_info": {
            "$ref": "#/components/schemas/sylphx.data.v1.ConnectionInfo",
            "description": "How to connect."
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ConnectKvNamespaceRequest": {
        "description": "The request of ConnectKvNamespace.",
        "properties": {
          "name": {
            "description": "The name of the kv namespace.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/KvNamespace"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ConnectKvNamespaceResponse": {
        "description": "The response of ConnectKvNamespace.",
        "properties": {
          "connection_info": {
            "$ref": "#/components/schemas/sylphx.data.v1.ConnectionInfo",
            "description": "How to connect."
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ConnectSearchIndexRequest": {
        "description": "The request of ConnectSearchIndex.",
        "properties": {
          "name": {
            "description": "The name of the search index.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/SearchIndex"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ConnectSearchIndexResponse": {
        "description": "The response of ConnectSearchIndex.",
        "properties": {
          "connection_info": {
            "$ref": "#/components/schemas/sylphx.data.v1.ConnectionInfo",
            "description": "How to connect."
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ConnectionInfo": {
        "description": "ConnectionInfo is how a client reaches one datastore through Data Edge. The\npassword is the datastore's own engine credential.",
        "properties": {
          "database": {
            "description": "The Postgres database name; empty for other kinds.",
            "type": "string"
          },
          "direct_uri": {
            "description": "Postgres only: the direct URL for migrations, `pg_dump`,\n`LISTEN`/`NOTIFY`, session `SET`, and logical replication.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "host": {
            "description": "The endpoint host, `{ref}.sylphx.net`.",
            "type": "string"
          },
          "password": {
            "description": "The engine password.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "port": {
            "description": "The TLS port: 5432 Postgres, 6379 Valkey, 8108 search, 443 objects.",
            "format": "int32",
            "type": "integer"
          },
          "uri": {
            "description": "A driver URL embedding the credentials.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "username": {
            "description": "The engine user.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ConnectionProfile": {
        "description": "ConnectionProfile is which Postgres path a connection takes.",
        "enum": [
          "pooled",
          "direct"
        ],
        "type": "string"
      },
      "sylphx.data.v1.CreateBucketRequest": {
        "description": "The request of CreateBucket.",
        "properties": {
          "bucket": {
            "$ref": "#/components/schemas/sylphx.data.v1.Bucket",
            "description": "The bucket to create; only spec and caller-writable metadata are read."
          },
          "bucket_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/Bucket"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "bucket"
        ],
        "type": "object"
      },
      "sylphx.data.v1.CreateDatabaseRequest": {
        "description": "The request of CreateDatabase.",
        "properties": {
          "database": {
            "$ref": "#/components/schemas/sylphx.data.v1.Database",
            "description": "The database to create; only spec and caller-writable metadata are read."
          },
          "database_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/Database"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "database"
        ],
        "type": "object"
      },
      "sylphx.data.v1.CreateKvNamespaceRequest": {
        "description": "The request of CreateKvNamespace.",
        "properties": {
          "kv_namespace": {
            "$ref": "#/components/schemas/sylphx.data.v1.KvNamespace",
            "description": "The kv namespace to create; only spec and caller-writable metadata are\nread."
          },
          "kv_namespace_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/KvNamespace"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "kv_namespace"
        ],
        "type": "object"
      },
      "sylphx.data.v1.CreateSearchIndexRequest": {
        "description": "The request of CreateSearchIndex.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/SearchIndex"
          },
          "search_index": {
            "$ref": "#/components/schemas/sylphx.data.v1.SearchIndex",
            "description": "The search index to create; only spec and caller-writable metadata are\nread."
          },
          "search_index_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "search_index"
        ],
        "type": "object"
      },
      "sylphx.data.v1.Database": {
        "description": "A Database is one customer Postgres. Silo: each has its own engine,\ncredentials, backup, region, and deletion. The customer sets no instance\nclass, disk, replica, or `max_connections`; they derive from compute size.\nAn idle free-tier database stops and the next connect wakes it.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/databases/{database}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.data.v1.DatabaseSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.data.v1.DatabaseStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`db_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.data.v1.DatabaseSpec": {
        "description": "DatabaseSpec is the caller-writable state of a Database.",
        "properties": {
          "compute_units": {
            "description": "Compute size in units; default the plan's. `max_connections` derives from\nit.",
            "type": "number"
          },
          "deletion_protection": {
            "description": "While set, Delete fails with DELETION_PROTECTED.",
            "type": "boolean"
          },
          "postgres_version": {
            "description": "The Postgres major version, for example `17`; default the newest\nsupported.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "region": {
            "description": "The region; default the project's home region. Changing it moves the data\nby signed export and import.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.DatabaseStatus": {
        "description": "DatabaseStatus is the observed state of a Database.",
        "properties": {
          "cell": {
            "description": "The cell the datastore is placed on.",
            "readOnly": true,
            "type": "string"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "earliest_restore_time": {
            "description": "The earliest point `:restore` accepts.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "host": {
            "description": "The endpoint host, `{ref}.sylphx.net`; `{ref}-direct` is the direct\nprofile.",
            "readOnly": true,
            "type": "string"
          },
          "max_connections": {
            "description": "Derived from compute size; not customer config.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "ref": {
            "description": "The routing ref: the first DNS label of the datastore's endpoint.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.data.v1.DatastoreState",
            "description": "Serving state.",
            "readOnly": true
          },
          "storage_bytes": {
            "description": "Bytes stored, at the last usage sample.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.DatastoreState": {
        "description": "DatastoreState is whether a datastore is serving.",
        "enum": [
          "provisioning",
          "active",
          "idle",
          "moving",
          "deleting"
        ],
        "type": "string"
      },
      "sylphx.data.v1.DeleteBucketRequest": {
        "description": "The request of DeleteBucket.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the bucket to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/Bucket"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.DeleteDatabaseRequest": {
        "description": "The request of DeleteDatabase.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the database to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/Database"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.DeleteDocumentRequest": {
        "description": "The request of DeleteDocument.",
        "properties": {
          "document_id": {
            "description": "The document's id.",
            "type": "string"
          },
          "expected_version": {
            "description": "Delete only when the current version equals this one (0: any).",
            "format": "uint64",
            "type": "string"
          },
          "index_id": {
            "description": "The search index's id.",
            "type": "string"
          }
        },
        "required": [
          "index_id",
          "document_id"
        ],
        "type": "object"
      },
      "sylphx.data.v1.DeleteDocumentResponse": {
        "description": "The response of DeleteDocument.",
        "properties": {
          "deleted": {
            "description": "Whether the document existed.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.DeleteKvNamespaceRequest": {
        "description": "The request of DeleteKvNamespace.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the kv namespace to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/KvNamespace"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.DeleteObjectRequest": {
        "description": "The request of DeleteObject.",
        "properties": {
          "bucket_id": {
            "description": "The bucket's id.",
            "type": "string"
          },
          "expected_version": {
            "description": "Delete only when the current version equals this one (0: any).",
            "format": "uint64",
            "type": "string"
          },
          "key": {
            "description": "The object key.",
            "type": "string"
          }
        },
        "required": [
          "bucket_id",
          "key"
        ],
        "type": "object"
      },
      "sylphx.data.v1.DeleteObjectResponse": {
        "description": "The response of DeleteObject.",
        "properties": {
          "deleted": {
            "description": "Whether a current version existed and was deleted.",
            "type": "boolean"
          },
          "object": {
            "$ref": "#/components/schemas/sylphx.data.v1.ObjectRecord",
            "description": "The delete marker written."
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.DeleteSearchIndexRequest": {
        "description": "The request of DeleteSearchIndex.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the search index to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/SearchIndex"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.DeleteValueRequest": {
        "description": "The request of DeleteValue.",
        "properties": {
          "expected_version": {
            "description": "Delete only when the current version equals this one (0: any).",
            "format": "uint64",
            "type": "string"
          },
          "key": {
            "description": "The key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key"
        ],
        "type": "object"
      },
      "sylphx.data.v1.DeleteValueResponse": {
        "description": "The response of DeleteValue.",
        "properties": {
          "deleted": {
            "description": "Whether the key existed.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.DocumentRecord": {
        "description": "A document in a search index.",
        "properties": {
          "document_id": {
            "description": "The document's id.",
            "type": "string"
          },
          "document_json": {
            "contentEncoding": "base64",
            "description": "The document as JSON, base64.",
            "type": "string"
          },
          "index_id": {
            "description": "The search index's id in the environment, for example `articles`.",
            "type": "string"
          },
          "sha256": {
            "description": "`sha256:<hex>` of the document.",
            "type": "string"
          },
          "updated_at_unix_ms": {
            "description": "When this version was written, in Unix milliseconds.",
            "format": "int64",
            "type": "string"
          },
          "vector": {
            "description": "The document's embedding; its length is the index's vector dimensions.",
            "items": {
              "type": "number"
            },
            "type": "array"
          },
          "version": {
            "description": "The version, increasing per document.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ExpireValueRequest": {
        "description": "The request of ExpireValue.",
        "properties": {
          "key": {
            "description": "The key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          },
          "ttl_seconds": {
            "description": "Seconds to live, at most one year; zero makes the key persistent.",
            "format": "uint64",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key",
          "ttl_seconds"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ExpireValueResponse": {
        "description": "The response of ExpireValue.",
        "properties": {
          "applied": {
            "description": "Whether the key existed and its expiry was set.",
            "type": "boolean"
          },
          "expires_at_unix_ms": {
            "description": "The new expiry in Unix milliseconds; zero never expires.",
            "format": "int64",
            "type": "string"
          },
          "version": {
            "description": "The key's version (an expiry does not change it).",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.GetBucketRequest": {
        "description": "The request of GetBucket.",
        "properties": {
          "name": {
            "description": "The name of the bucket to get.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/Bucket"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.GetDatabaseRequest": {
        "description": "The request of GetDatabase.",
        "properties": {
          "name": {
            "description": "The name of the database to get.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/Database"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.GetDocumentRequest": {
        "description": "The request of GetDocument.",
        "properties": {
          "document_id": {
            "description": "The document's id.",
            "type": "string"
          },
          "index_id": {
            "description": "The search index's id.",
            "type": "string"
          }
        },
        "required": [
          "index_id",
          "document_id"
        ],
        "type": "object"
      },
      "sylphx.data.v1.GetDocumentResponse": {
        "description": "The response of GetDocument.",
        "properties": {
          "document": {
            "$ref": "#/components/schemas/sylphx.data.v1.DocumentRecord",
            "description": "The document."
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.GetKvNamespaceRequest": {
        "description": "The request of GetKvNamespace.",
        "properties": {
          "name": {
            "description": "The name of the kv namespace to get.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/KvNamespace"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.GetObjectRequest": {
        "description": "The request of GetObject.",
        "properties": {
          "bucket_id": {
            "description": "The bucket's id.",
            "type": "string"
          },
          "key": {
            "description": "The object key.",
            "type": "string"
          },
          "version": {
            "description": "Zero reads the current version; a positive value reads that version.",
            "format": "uint64",
            "type": "string"
          }
        },
        "required": [
          "bucket_id",
          "key"
        ],
        "type": "object"
      },
      "sylphx.data.v1.GetObjectResponse": {
        "description": "The response of GetObject.",
        "properties": {
          "body": {
            "contentEncoding": "base64",
            "description": "The bytes, base64.",
            "type": "string"
          },
          "object": {
            "$ref": "#/components/schemas/sylphx.data.v1.ObjectRecord",
            "description": "The object's metadata."
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.GetSearchIndexRequest": {
        "description": "The request of GetSearchIndex.",
        "properties": {
          "name": {
            "description": "The name of the search index to get.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/SearchIndex"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.GetValueRequest": {
        "description": "The request of GetValue.",
        "properties": {
          "key": {
            "description": "The key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key"
        ],
        "type": "object"
      },
      "sylphx.data.v1.GetValueResponse": {
        "description": "The response of GetValue.",
        "properties": {
          "value": {
            "$ref": "#/components/schemas/sylphx.data.v1.ValueRecord",
            "description": "The entry."
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.GetValuesRequest": {
        "description": "The request of GetValues.",
        "properties": {
          "keys": {
            "description": "The keys, at most 1000.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "keys"
        ],
        "type": "object"
      },
      "sylphx.data.v1.GetValuesResponse": {
        "description": "The response of GetValues.",
        "properties": {
          "values": {
            "description": "One entry per key, in the order asked; an absent or expired key keeps\nits key and has no `value` or `version`.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.ValueRecord"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.HashField": {
        "description": "A field of a hash and its value.",
        "properties": {
          "field": {
            "description": "The field's name.",
            "type": "string"
          },
          "value": {
            "contentEncoding": "base64",
            "description": "The bytes, base64; unset when the field is absent.",
            "type": "string"
          }
        },
        "required": [
          "field"
        ],
        "type": "object"
      },
      "sylphx.data.v1.HashGetAllRequest": {
        "description": "The request of HashGetAll.",
        "properties": {
          "key": {
            "description": "The hash's key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key"
        ],
        "type": "object"
      },
      "sylphx.data.v1.HashGetAllResponse": {
        "description": "The response of HashGetAll.",
        "properties": {
          "fields": {
            "description": "Every field of the hash; empty when the hash is absent.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.HashField"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.HashGetFieldsRequest": {
        "description": "The request of HashGetFields.",
        "properties": {
          "fields": {
            "description": "The fields' names.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "key": {
            "description": "The hash's key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key",
          "fields"
        ],
        "type": "object"
      },
      "sylphx.data.v1.HashGetFieldsResponse": {
        "description": "The response of HashGetFields.",
        "properties": {
          "fields": {
            "description": "One per field asked, in order; an absent field has no `value`.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.HashField"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.HashGetValueRequest": {
        "description": "The request of HashGetValue.",
        "properties": {
          "field": {
            "description": "The field's name.",
            "type": "string"
          },
          "key": {
            "description": "The hash's key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key",
          "field"
        ],
        "type": "object"
      },
      "sylphx.data.v1.HashGetValueResponse": {
        "description": "The response of HashGetValue.",
        "properties": {
          "value": {
            "contentEncoding": "base64",
            "description": "The bytes, base64; unset when the field or the hash is absent.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.HashSetValueRequest": {
        "description": "The request of HashSetValue.",
        "properties": {
          "fields": {
            "description": "The fields to set; at least one.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.HashField"
            },
            "type": "array"
          },
          "key": {
            "description": "The hash's key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key",
          "fields"
        ],
        "type": "object"
      },
      "sylphx.data.v1.HashSetValueResponse": {
        "description": "The response of HashSetValue.",
        "properties": {
          "added": {
            "description": "How many fields were new.",
            "format": "uint64",
            "type": "string"
          },
          "version": {
            "description": "The hash's version after the write.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.IncrementValueRequest": {
        "description": "The request of IncrementValue.",
        "properties": {
          "delta": {
            "description": "The amount to add; unset adds 1, and zero reads the count.",
            "format": "int64",
            "type": "string"
          },
          "key": {
            "description": "The key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key"
        ],
        "type": "object"
      },
      "sylphx.data.v1.IncrementValueResponse": {
        "description": "The response of IncrementValue.",
        "properties": {
          "value": {
            "$ref": "#/components/schemas/sylphx.data.v1.ValueRecord",
            "description": "The entry after the increment; `value` is the decimal text of the count."
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.KvNamespace": {
        "description": "A KvNamespace is one customer key-value store on its own Valkey: versioned\nbytes with compare-and-set, TTL, and prefix list, plus a closed Valkey\ncommand profile on the wire. Silo: each has its own engine, credentials,\nbackup, region, and deletion.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/kv_namespaces/{kv_namespace}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.data.v1.KvNamespaceSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.data.v1.KvNamespaceStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`kv_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.data.v1.KvNamespaceSpec": {
        "description": "KvNamespaceSpec is the caller-writable state of a KvNamespace.",
        "properties": {
          "default_ttl": {
            "description": "The TTL of a value written without one; unset keeps values until deleted.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "deletion_protection": {
            "description": "While set, Delete fails with DELETION_PROTECTED.",
            "type": "boolean"
          },
          "region": {
            "description": "The region; default the project's home region. Changing it moves the data\nby signed export and import.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.KvNamespaceStatus": {
        "description": "KvNamespaceStatus is the observed state of a KvNamespace.",
        "properties": {
          "cell": {
            "description": "The cell the datastore is placed on.",
            "readOnly": true,
            "type": "string"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "host": {
            "description": "The endpoint host, `{ref}.sylphx.net`, port 6379.",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "ref": {
            "description": "The routing ref: the first DNS label of the datastore's endpoint.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.data.v1.DatastoreState",
            "description": "Serving state.",
            "readOnly": true
          },
          "storage_bytes": {
            "description": "Bytes stored, at the last usage sample.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ListBucketsRequest": {
        "description": "The request of ListBuckets.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/Bucket"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ListBucketsResponse": {
        "description": "The response of ListBuckets.",
        "properties": {
          "buckets": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.Bucket"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ListDatabasesRequest": {
        "description": "The request of ListDatabases.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/Database"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ListDatabasesResponse": {
        "description": "The response of ListDatabases.",
        "properties": {
          "databases": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.Database"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ListKvNamespacesRequest": {
        "description": "The request of ListKvNamespaces.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/KvNamespace"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ListKvNamespacesResponse": {
        "description": "The response of ListKvNamespaces.",
        "properties": {
          "kv_namespaces": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.KvNamespace"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ListLenValueRequest": {
        "description": "The request of ListLenValue.",
        "properties": {
          "key": {
            "description": "The list's key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ListLenValueResponse": {
        "description": "The response of ListLenValue.",
        "properties": {
          "length": {
            "description": "The list's length.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ListObjectsRequest": {
        "description": "The request of ListObjects.",
        "properties": {
          "bucket_id": {
            "description": "The bucket's id.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many objects; the service caps it.",
            "format": "int32",
            "minimum": 0,
            "type": "integer"
          },
          "page_token": {
            "description": "The `next_page_token` of the previous page.",
            "type": "string"
          },
          "prefix": {
            "description": "Only keys with this prefix.",
            "type": "string"
          }
        },
        "required": [
          "bucket_id"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ListObjectsResponse": {
        "description": "The response of ListObjects.",
        "properties": {
          "next_page_token": {
            "description": "Empty on the last page.",
            "type": "string"
          },
          "objects": {
            "description": "The page of objects.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.ObjectRecord"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ListPopValueRequest": {
        "description": "The request of ListPopValue.",
        "properties": {
          "count": {
            "description": "How many values to pop; unset pops one, zero pops none.",
            "format": "uint64",
            "type": "string"
          },
          "key": {
            "description": "The list's key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ListPopValueResponse": {
        "description": "The response of ListPopValue.",
        "properties": {
          "length": {
            "description": "The list's length after the pop.",
            "format": "uint64",
            "type": "string"
          },
          "values": {
            "description": "The popped values, each base64, head first.",
            "items": {
              "contentEncoding": "base64",
              "type": "string"
            },
            "type": "array"
          },
          "version": {
            "description": "The list's version after the pop.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ListPushValueRequest": {
        "description": "The request of ListPushValue.",
        "properties": {
          "key": {
            "description": "The list's key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          },
          "values": {
            "description": "The values to push, each base64, pushed in order (the last ends first).",
            "items": {
              "contentEncoding": "base64",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "namespace_id",
          "key",
          "values"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ListPushValueResponse": {
        "description": "The response of ListPushValue.",
        "properties": {
          "length": {
            "description": "The list's length after the push.",
            "format": "uint64",
            "type": "string"
          },
          "version": {
            "description": "The list's version after the push.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ListRangeValueRequest": {
        "description": "The request of ListRangeValue.",
        "properties": {
          "key": {
            "description": "The list's key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          },
          "start": {
            "description": "The first index, inclusive; unset is 0, negative counts from the end.",
            "format": "int64",
            "type": "string"
          },
          "stop": {
            "description": "The last index, inclusive; unset is -1 (the end).",
            "format": "int64",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ListRangeValueResponse": {
        "description": "The response of ListRangeValue.",
        "properties": {
          "values": {
            "description": "The values in the range, each base64.",
            "items": {
              "contentEncoding": "base64",
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ListSearchIndexesRequest": {
        "description": "The request of ListSearchIndexes.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/SearchIndex"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ListSearchIndexesResponse": {
        "description": "The response of ListSearchIndexes.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "search_indexes": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.SearchIndex"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ListValuesRequest": {
        "description": "The request of ListValues.",
        "properties": {
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many entries; the service caps it.",
            "format": "int32",
            "minimum": 0,
            "type": "integer"
          },
          "page_token": {
            "description": "The `next_page_token` of the previous page.",
            "type": "string"
          },
          "prefix": {
            "description": "Only keys with this prefix.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ListValuesResponse": {
        "description": "The response of ListValues.",
        "properties": {
          "next_page_token": {
            "description": "Empty on the last page.",
            "type": "string"
          },
          "values": {
            "description": "The page of entries.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.ValueRecord"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.MultiSearchRequest": {
        "description": "The request of MultiSearch.",
        "properties": {
          "index_id": {
            "description": "The search index's id.",
            "type": "string"
          },
          "searches": {
            "description": "The searches, 1 to 10; each one's index_id is this index.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.SearchRequest"
            },
            "type": "array"
          }
        },
        "required": [
          "index_id",
          "searches"
        ],
        "type": "object"
      },
      "sylphx.data.v1.MultiSearchResponse": {
        "description": "The response of MultiSearch.",
        "properties": {
          "results": {
            "description": "One result per search, in request order.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.SearchResponse"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ObjectRecord": {
        "description": "An object's metadata.",
        "properties": {
          "bucket_id": {
            "description": "The bucket's id in the environment, for example `uploads`.",
            "type": "string"
          },
          "content_type": {
            "description": "The media type given at put.",
            "type": "string"
          },
          "delete_marker": {
            "description": "Whether this version is a delete marker (exact-version reads only).",
            "type": "boolean"
          },
          "etag": {
            "description": "The entity tag of this version.",
            "type": "string"
          },
          "key": {
            "description": "The object key; `/` separates path segments.",
            "type": "string"
          },
          "sha256": {
            "description": "`sha256:<hex>` of the bytes.",
            "type": "string"
          },
          "size": {
            "description": "Size in bytes.",
            "format": "uint64",
            "type": "string"
          },
          "updated_at_unix_ms": {
            "description": "When this version was written, in Unix milliseconds.",
            "format": "int64",
            "type": "string"
          },
          "version": {
            "description": "The version, increasing per key.",
            "format": "uint64",
            "type": "string"
          },
          "visibility": {
            "description": "`public` or `private` (the default); current version only.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.PatchDocumentRequest": {
        "description": "The request of PatchDocument.",
        "properties": {
          "document_id": {
            "description": "The document's id; the document must exist.",
            "type": "string"
          },
          "expected_version": {
            "description": "Write only when the current version equals this one (0: any).",
            "format": "uint64",
            "type": "string"
          },
          "index_id": {
            "description": "The search index's id.",
            "type": "string"
          },
          "patch_json": {
            "contentEncoding": "base64",
            "description": "A JSON object, base64; at most 1 MiB. A field set to a value replaces\nthat field, an object merges into the stored object field by field, and\nnull removes the field.",
            "type": "string"
          },
          "vector": {
            "description": "A new embedding; empty keeps the stored one.",
            "items": {
              "type": "number"
            },
            "type": "array"
          }
        },
        "required": [
          "index_id",
          "document_id",
          "patch_json"
        ],
        "type": "object"
      },
      "sylphx.data.v1.PatchDocumentResponse": {
        "description": "The response of PatchDocument.",
        "properties": {
          "document": {
            "$ref": "#/components/schemas/sylphx.data.v1.DocumentRecord",
            "description": "The stored document."
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.PutDocumentRequest": {
        "description": "The request of PutDocument.",
        "properties": {
          "document_id": {
            "description": "The document's id.",
            "type": "string"
          },
          "document_json": {
            "contentEncoding": "base64",
            "description": "The document as JSON, base64; at most 1 MiB.",
            "type": "string"
          },
          "expected_version": {
            "description": "Write only when the current version equals this one (0: any).",
            "format": "uint64",
            "type": "string"
          },
          "index_id": {
            "description": "The search index's id.",
            "type": "string"
          },
          "vector": {
            "description": "The document's embedding, at most 4096 numbers; the index's vector\ndimensions when it has them.",
            "items": {
              "type": "number"
            },
            "type": "array"
          }
        },
        "required": [
          "index_id",
          "document_id"
        ],
        "type": "object"
      },
      "sylphx.data.v1.PutDocumentResponse": {
        "description": "The response of PutDocument.",
        "properties": {
          "document": {
            "$ref": "#/components/schemas/sylphx.data.v1.DocumentRecord",
            "description": "The stored document."
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.PutObjectRequest": {
        "description": "The request of PutObject.",
        "properties": {
          "body": {
            "contentEncoding": "base64",
            "description": "The bytes, base64.",
            "type": "string"
          },
          "bucket_id": {
            "description": "The bucket's id.",
            "type": "string"
          },
          "content_type": {
            "description": "The media type, for example `application/pdf`.",
            "type": "string"
          },
          "expected_version": {
            "description": "Write only when the current version equals this one (0: any).",
            "format": "uint64",
            "type": "string"
          },
          "key": {
            "description": "The object key.",
            "type": "string"
          }
        },
        "required": [
          "bucket_id",
          "key"
        ],
        "type": "object"
      },
      "sylphx.data.v1.PutObjectResponse": {
        "description": "The response of PutObject.",
        "properties": {
          "object": {
            "$ref": "#/components/schemas/sylphx.data.v1.ObjectRecord",
            "description": "The stored object."
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.PutValueRequest": {
        "description": "The request of PutValue.",
        "properties": {
          "expected_version": {
            "description": "Write only when the current version equals this one (0: any).",
            "format": "uint64",
            "type": "string"
          },
          "key": {
            "description": "The key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          },
          "nx": {
            "description": "Write only when the key is absent (SET NX).",
            "type": "boolean"
          },
          "ttl_seconds": {
            "description": "Seconds to live; unset uses the namespace default, zero never expires.",
            "format": "uint64",
            "type": "string"
          },
          "value": {
            "contentEncoding": "base64",
            "description": "The bytes, base64.",
            "type": "string"
          },
          "xx": {
            "description": "Write only when the key is present (SET XX); excludes `nx`.",
            "type": "boolean"
          }
        },
        "required": [
          "namespace_id",
          "key"
        ],
        "type": "object"
      },
      "sylphx.data.v1.PutValueResponse": {
        "description": "The response of PutValue.",
        "properties": {
          "value": {
            "$ref": "#/components/schemas/sylphx.data.v1.ValueRecord",
            "description": "The stored entry."
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.RestoreDatabaseRequest": {
        "description": "The request of RestoreDatabase.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the database.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/Database"
          },
          "restore_time": {
            "description": "The point in time to restore to.",
            "format": "date-time",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate without acting.",
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "restore_time"
        ],
        "type": "object"
      },
      "sylphx.data.v1.RotateBucketCredentialsRequest": {
        "description": "The request of RotateBucketCredentials.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the bucket.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/Bucket"
          },
          "validate_only": {
            "description": "Validate without acting.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.RotateDatabaseCredentialsRequest": {
        "description": "The request of RotateDatabaseCredentials.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the database.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/Database"
          },
          "validate_only": {
            "description": "Validate without acting.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.RotateKvNamespaceCredentialsRequest": {
        "description": "The request of RotateKvNamespaceCredentials.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the kv namespace.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/KvNamespace"
          },
          "validate_only": {
            "description": "Validate without acting.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.RotateSearchIndexCredentialsRequest": {
        "description": "The request of RotateSearchIndexCredentials.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the search index.",
            "type": "string",
            "x-sylphx-resource-reference": "data.sylphx.com/SearchIndex"
          },
          "validate_only": {
            "description": "Validate without acting.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ScanValuesRequest": {
        "description": "The request of ScanValues.",
        "properties": {
          "count": {
            "description": "At most this many keys per call; the service caps it at 1000.",
            "format": "int32",
            "minimum": 0,
            "type": "integer"
          },
          "cursor": {
            "description": "The `cursor` of the previous call; empty starts the walk.",
            "type": "string"
          },
          "glob": {
            "description": "A glob of the keys to answer (`*`, `?`, `\\` escapes); empty matches\nevery key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ScanValuesResponse": {
        "description": "The response of ScanValues.",
        "properties": {
          "cursor": {
            "description": "Pass to the next call; empty when the walk is done.",
            "type": "string"
          },
          "keys": {
            "description": "The matching keys of this step.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.SearchFilter": {
        "description": "A condition on one field of a document.",
        "properties": {
          "field": {
            "description": "A dot path of object keys, for example `price.amount`; at most 8 keys.",
            "type": "string"
          },
          "op": {
            "description": "`eq`, `ne`, `in`, `gt`, `gte`, `lt`, `lte`, or `exists`. `eq` and `in`\nalso match an array field that holds the value; `ne` matches documents\nwithout the field.",
            "type": "string"
          },
          "value_json": {
            "description": "The value as JSON: a string, number, or boolean; for `in`, an array of\n1 to 100 of them; for the ranges, a number or string; for `exists`,\nempty.",
            "type": "string"
          }
        },
        "required": [
          "field",
          "op"
        ],
        "type": "object"
      },
      "sylphx.data.v1.SearchHit": {
        "description": "A document that matched a search.",
        "properties": {
          "document": {
            "$ref": "#/components/schemas/sylphx.data.v1.DocumentRecord",
            "description": "The document."
          },
          "score": {
            "description": "How well it matched; higher is better. The text rank, the cosine\nsimilarity, or the fused rank; 0 when listing.",
            "type": "number"
          },
          "text_score": {
            "description": "The full-text rank, when the document matched the text.",
            "type": "number"
          },
          "vector_score": {
            "description": "The cosine similarity, when the document was in the vector list.",
            "type": "number"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.SearchIndex": {
        "description": "A SearchIndex is one customer lexical and vector index of JSON documents.\nDimension 0 is lexical only; a positive dimension adds cosine queries. Data\nnever invents embeddings. Silo: each has its own engine, credentials,\nbackup, region, and deletion.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/search_indexes/{search_index}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.data.v1.SearchIndexSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.data.v1.SearchIndexStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`idx_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.data.v1.SearchIndexSpec": {
        "description": "SearchIndexSpec is the caller-writable state of a SearchIndex.",
        "properties": {
          "deletion_protection": {
            "description": "While set, Delete fails with DELETION_PROTECTED.",
            "type": "boolean"
          },
          "region": {
            "description": "The region; default the project's home region. Changing it moves the data\nby signed export and import.",
            "type": "string"
          },
          "vector_dimensions": {
            "description": "The vector dimension; 0 for lexical only.",
            "format": "int32",
            "type": "integer",
            "x-sylphx-immutable": true
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.SearchIndexStatus": {
        "description": "SearchIndexStatus is the observed state of a SearchIndex.",
        "properties": {
          "cell": {
            "description": "The cell the datastore is placed on.",
            "readOnly": true,
            "type": "string"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "document_count": {
            "description": "Indexed documents, at the last usage sample.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "host": {
            "description": "The endpoint host, `{ref}.sylphx.net`, port 8108.",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "ref": {
            "description": "The routing ref: the first DNS label of the datastore's endpoint.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.data.v1.DatastoreState",
            "description": "Serving state.",
            "readOnly": true
          },
          "storage_bytes": {
            "description": "Bytes stored, at the last usage sample.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.SearchRequest": {
        "description": "The request of Search. Text alone ranks by full-text relevance, a vector\nalone by cosine similarity, and both by reciprocal rank fusion (k = 60) of\nthe two lists. With neither, the filtered documents are listed by id.",
        "properties": {
          "filters": {
            "description": "Conditions every hit meets, at most 16.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.SearchFilter"
            },
            "type": "array"
          },
          "index_id": {
            "description": "The search index's id.",
            "type": "string"
          },
          "limit": {
            "description": "At most this many hits, 1 to 100; unset is 20.",
            "format": "int32",
            "minimum": 0,
            "type": "integer"
          },
          "offset": {
            "description": "Hits to skip; offset + limit is at most 1000.",
            "format": "int32",
            "minimum": 0,
            "type": "integer"
          },
          "prefix": {
            "description": "Whether the query's last word also matches as a word prefix; unset is\ntrue.",
            "type": "boolean"
          },
          "query": {
            "description": "Text to match, in web-search syntax: words (all must match), \"quoted\nphrases\", `or`, and `-word` to exclude. The last word also matches as a\nword prefix unless `prefix` is false.",
            "type": "string"
          },
          "vector": {
            "description": "An embedding to match by cosine similarity; its length is the index's\nvector dimensions.",
            "items": {
              "type": "number"
            },
            "type": "array"
          },
          "vector_weight": {
            "description": "The vector list's share of a hybrid score, 0 to 1; unset is 0.5.",
            "type": "number"
          }
        },
        "required": [
          "index_id"
        ],
        "type": "object"
      },
      "sylphx.data.v1.SearchResponse": {
        "description": "The response of Search.",
        "properties": {
          "hits": {
            "description": "The hits, best first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.SearchHit"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.UpdateBucketRequest": {
        "description": "The request of UpdateBucket.",
        "properties": {
          "allow_missing": {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "bucket": {
            "$ref": "#/components/schemas/sylphx.data.v1.Bucket",
            "description": "The bucket to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "bucket"
        ],
        "type": "object"
      },
      "sylphx.data.v1.UpdateDatabaseRequest": {
        "description": "The request of UpdateDatabase.",
        "properties": {
          "allow_missing": {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "database": {
            "$ref": "#/components/schemas/sylphx.data.v1.Database",
            "description": "The database to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "database"
        ],
        "type": "object"
      },
      "sylphx.data.v1.UpdateKvNamespaceRequest": {
        "description": "The request of UpdateKvNamespace.",
        "properties": {
          "allow_missing": {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "kv_namespace": {
            "$ref": "#/components/schemas/sylphx.data.v1.KvNamespace",
            "description": "The kv namespace to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "kv_namespace"
        ],
        "type": "object"
      },
      "sylphx.data.v1.UpdateSearchIndexRequest": {
        "description": "The request of UpdateSearchIndex.",
        "properties": {
          "allow_missing": {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "search_index": {
            "$ref": "#/components/schemas/sylphx.data.v1.SearchIndex",
            "description": "The search index to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "search_index"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ValueRecord": {
        "description": "A key-value entry.",
        "properties": {
          "expires_at_unix_ms": {
            "description": "Expiry in Unix milliseconds; zero never expires.",
            "format": "int64",
            "type": "string"
          },
          "key": {
            "description": "The key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id in the environment, for example `ratelimit`.",
            "type": "string"
          },
          "sha256": {
            "description": "`sha256:<hex>` of the value.",
            "type": "string"
          },
          "updated_at_unix_ms": {
            "description": "When this version was written, in Unix milliseconds.",
            "format": "int64",
            "type": "string"
          },
          "value": {
            "contentEncoding": "base64",
            "description": "The bytes, base64.",
            "type": "string"
          },
          "version": {
            "description": "The version, increasing per key.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ZSetAddValueRequest": {
        "description": "The request of ZSetAddValue.",
        "properties": {
          "key": {
            "description": "The sorted set's key.",
            "type": "string"
          },
          "members": {
            "description": "The members to add or rescore.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.ZSetMember"
            },
            "type": "array"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key",
          "members"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ZSetAddValueResponse": {
        "description": "The response of ZSetAddValue.",
        "properties": {
          "added": {
            "description": "How many members were new.",
            "format": "uint64",
            "type": "string"
          },
          "version": {
            "description": "The sorted set's version after the write.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ZSetLenValueRequest": {
        "description": "The request of ZSetLenValue.",
        "properties": {
          "key": {
            "description": "The sorted set's key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ZSetLenValueResponse": {
        "description": "The response of ZSetLenValue.",
        "properties": {
          "length": {
            "description": "The number of members.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ZSetMember": {
        "description": "A member of a sorted set and its score.",
        "properties": {
          "member": {
            "description": "The member.",
            "type": "string"
          },
          "score": {
            "description": "The score; unset in a range read without `with_scores`.",
            "type": "number"
          }
        },
        "required": [
          "member"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ZSetRangeValueRequest": {
        "description": "The request of ZSetRangeValue.",
        "properties": {
          "key": {
            "description": "The sorted set's key.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          },
          "start": {
            "description": "The first rank, inclusive; unset is 0, negative counts from the end.",
            "format": "int64",
            "type": "string"
          },
          "stop": {
            "description": "The last rank, inclusive; unset is -1 (the end).",
            "format": "int64",
            "type": "string"
          },
          "with_scores": {
            "description": "Whether to answer each member's score.",
            "type": "boolean"
          }
        },
        "required": [
          "namespace_id",
          "key"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ZSetRangeValueResponse": {
        "description": "The response of ZSetRangeValue.",
        "properties": {
          "members": {
            "description": "The members in the range, lowest score first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.data.v1.ZSetMember"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.data.v1.ZSetScoreValueRequest": {
        "description": "The request of ZSetScoreValue.",
        "properties": {
          "key": {
            "description": "The sorted set's key.",
            "type": "string"
          },
          "member": {
            "description": "The member.",
            "type": "string"
          },
          "namespace_id": {
            "description": "The namespace's id.",
            "type": "string"
          }
        },
        "required": [
          "namespace_id",
          "key",
          "member"
        ],
        "type": "object"
      },
      "sylphx.data.v1.ZSetScoreValueResponse": {
        "description": "The response of ZSetScoreValue.",
        "properties": {
          "score": {
            "description": "The member's score; unset when the member or the set is absent.",
            "type": "number"
          }
        },
        "type": "object"
      },
      "sylphx.entitlement.v1.AccountState": {
        "description": "AccountState is an org's standing, derived from plan and payment.",
        "enum": [
          "active",
          "past_due",
          "suspended",
          "unclaimed"
        ],
        "type": "string"
      },
      "sylphx.entitlement.v1.Entitlement": {
        "description": "An Entitlement is what an org may use: its plan, account state, included\nusage per meter, resource and rate limits, and budget-lease policy. Each\norg has exactly one, `orgs/{org}/entitlements/default`; its spec is\nBilling's latest decision and its history is Billing's decision log.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata.",
            "readOnly": true
          },
          "name": {
            "description": "`orgs/{org}/entitlements/default`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.entitlement.v1.EntitlementSpec",
            "description": "Billing's latest decision.",
            "readOnly": true
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.entitlement.v1.EntitlementStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`ent_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.entitlement.v1.EntitlementSpec": {
        "description": "EntitlementSpec is Billing's latest entitlement decision for an org.",
        "properties": {
          "compute_time": {
            "description": "When Billing computed this decision. The platform enforces it as is for\n24 hours after this time; past that, non-hard-spend checks fail open.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "decision_sequence": {
            "description": "Monotonic per org; the platform never applies a lower sequence than it\nholds.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "lease_pools": {
            "description": "Budget-lease policy per hard-spend pool.",
            "items": {
              "$ref": "#/components/schemas/sylphx.entitlement.v1.LeasePolicy"
            },
            "readOnly": true,
            "type": "array"
          },
          "meters": {
            "description": "Included usage and over-limit behaviour per meter.",
            "items": {
              "$ref": "#/components/schemas/sylphx.entitlement.v1.MeterAllowance"
            },
            "readOnly": true,
            "type": "array"
          },
          "overrides": {
            "description": "Caps a partner set on this sub-org, each at most the partner's own.",
            "items": {
              "$ref": "#/components/schemas/sylphx.entitlement.v1.PartnerOverride"
            },
            "readOnly": true,
            "type": "array"
          },
          "plan": {
            "description": "The plan, for example `plans/pro`.",
            "readOnly": true,
            "type": "string"
          },
          "plan_version": {
            "description": "The plan version, for example `pro@2026-11-02`.",
            "readOnly": true,
            "type": "string"
          },
          "platforms": {
            "description": "Sylphx for Platforms is enabled (partner sub-orgs).",
            "readOnly": true,
            "type": "boolean"
          },
          "rate_limits": {
            "description": "Request rate limits per rate class.",
            "items": {
              "$ref": "#/components/schemas/sylphx.entitlement.v1.RateLimit"
            },
            "readOnly": true,
            "type": "array"
          },
          "resource_limits": {
            "description": "Limits on how many Resources of a collection the org may hold.",
            "items": {
              "$ref": "#/components/schemas/sylphx.entitlement.v1.ResourceLimit"
            },
            "readOnly": true,
            "type": "array"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.entitlement.v1.AccountState",
            "description": "The account state derived from plan and payment.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.entitlement.v1.EntitlementStatus": {
        "description": "EntitlementStatus is the observed state of an Entitlement.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "published_generation": {
            "description": "The Snapshot generation that first carried this decision.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.entitlement.v1.GetEntitlementRequest": {
        "description": "The request of GetEntitlement.",
        "properties": {
          "name": {
            "description": "The name of the entitlement to get.",
            "type": "string",
            "x-sylphx-resource-reference": "entitlement.sylphx.com/Entitlement"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.entitlement.v1.LeasePolicy": {
        "description": "LeasePolicy is the budget-lease policy of one hard-spend pool.",
        "properties": {
          "lease_required": {
            "description": "Spend in this pool requires a lease.",
            "readOnly": true,
            "type": "boolean"
          },
          "max_lease_nano_usd": {
            "description": "The largest lease Billing grants, in nano-USD.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "offline_allowance_nano_usd": {
            "description": "What a holder may spend when it holds no lease and Billing is\nunreachable, in nano-USD.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "pool": {
            "description": "The pool: `sandboxes`, `ai`, `runners`, or `notify.sms`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.entitlement.v1.ListEntitlementsRequest": {
        "description": "The request of ListEntitlements.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable spec fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The org to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "entitlement.sylphx.com/Entitlement"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.entitlement.v1.ListEntitlementsResponse": {
        "description": "The response of ListEntitlements.",
        "properties": {
          "entitlements": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.entitlement.v1.Entitlement"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.entitlement.v1.MeterAllowance": {
        "description": "MeterAllowance is the included usage of one meter per billing period.",
        "properties": {
          "exhausted": {
            "description": "The included quantity is used up, as of `compute_time`.",
            "readOnly": true,
            "type": "boolean"
          },
          "included": {
            "description": "Included quantity per billing period, in the meter's base unit.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "meter": {
            "description": "The meter id, for example `hosting.vcpu_seconds`.",
            "readOnly": true,
            "type": "string"
          },
          "overage": {
            "$ref": "#/components/schemas/sylphx.entitlement.v1.Overage",
            "description": "What happens past the included quantity.",
            "readOnly": true
          },
          "price_version_override": {
            "description": "An org-specific price version (enterprise, partner); empty for list price.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.entitlement.v1.Overage": {
        "description": "Overage is what happens when usage passes the included quantity.",
        "enum": [
          "deny",
          "bill",
          "bill_until_spend_limit"
        ],
        "type": "string"
      },
      "sylphx.entitlement.v1.PartnerOverride": {
        "description": "PartnerOverride is a cap a partner set on one meter of its sub-org.",
        "properties": {
          "cap": {
            "description": "The cap, in the meter's base unit per billing period.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "meter": {
            "description": "The meter id.",
            "readOnly": true,
            "type": "string"
          },
          "partner_org": {
            "description": "The partner org that set the cap.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/Org"
          }
        },
        "type": "object"
      },
      "sylphx.entitlement.v1.RateLimit": {
        "description": "RateLimit is the request rate of one rate class.",
        "properties": {
          "burst": {
            "description": "Requests the bucket holds for a burst.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "rate_class": {
            "description": "`control` or `inference`.",
            "readOnly": true,
            "type": "string"
          },
          "requests_per_minute": {
            "description": "Requests per minute, per org, enforced per cell.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "requests_per_second": {
            "description": "Sustained requests per second of the org's token bucket (the plan's\nclass, raised by its committed-spend band).",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.entitlement.v1.ResourceLimit": {
        "description": "ResourceLimit caps the Resources of one collection in the org.",
        "properties": {
          "collection": {
            "description": "The collection, for example `projects`.",
            "readOnly": true,
            "type": "string"
          },
          "limit": {
            "description": "The most Resources allowed; zero means none, -1 means unlimited.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.AckQueueMessagesRequest": {
        "description": "The request of AckQueueMessages.",
        "properties": {
          "leases": {
            "description": "The leases to ack, at most 100.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.MessageLease"
            },
            "type": "array"
          },
          "name": {
            "description": "The name of the queue.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Queue"
          }
        },
        "required": [
          "name",
          "leases"
        ],
        "type": "object"
      },
      "sylphx.events.v1.AckQueueMessagesResponse": {
        "description": "The response of AckQueueMessages.",
        "properties": {
          "stale_leases": {
            "description": "Leases that were stale and not applied.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.MessageLease"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.CloudEvent": {
        "description": "A CloudEvents 1.0 event as a producer submits it.",
        "properties": {
          "data": {
            "description": "The payload."
          },
          "data_content_type": {
            "description": "The payload media type; default `application/json`.",
            "type": "string"
          },
          "data_schema": {
            "description": "The payload schema URI.",
            "type": "string"
          },
          "event_time": {
            "description": "When the occurrence happened.",
            "format": "date-time",
            "type": "string"
          },
          "extensions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Extension attributes, at most 64.",
            "type": "object"
          },
          "id": {
            "description": "Unique per `source`; with `source` it is the dedupe key.",
            "type": "string"
          },
          "source": {
            "description": "The producer's URI-reference.",
            "type": "string"
          },
          "subject": {
            "description": "The subject within the source.",
            "type": "string"
          },
          "type": {
            "description": "The event type, for example `com.example.order.created`.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "source",
          "type"
        ],
        "type": "object"
      },
      "sylphx.events.v1.Connector": {
        "description": "A Connector is one delivery channel of the environment, as stored: an\nemail connector's allowed senders, a webhook's kind, and so on. It is\nread-only here: connectors are created and changed through\n`/v1/connectors`, and webhook endpoints have their own Resource. No secret\nor credential is ever shown.",
        "properties": {
          "allowed_senders": {
            "description": "The sender addresses an email connector may send from; empty for other\nkinds.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "display_name": {
            "description": "The connector's name.",
            "readOnly": true,
            "type": "string"
          },
          "kind": {
            "description": "The channel: `email`, `webhook`, `realtime`, `push`, or `sms`.",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata; `generation` is the active revision."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/connectors/{connector}`, where\n`{connector}` is the connector id of `/v1/connectors`.",
            "type": "string"
          },
          "state": {
            "description": "`active` or `disabled`.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`con_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.CreateInboundEndpointRequest": {
        "description": "The request of CreateInboundEndpoint.",
        "properties": {
          "inbound_endpoint": {
            "$ref": "#/components/schemas/sylphx.events.v1.InboundEndpoint",
            "description": "The inbound endpoint to create; only caller-writable fields are read."
          },
          "inbound_endpoint_id": {
            "description": "The inbound endpoint id, the final name segment; the server assigns one\nwhen empty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/InboundEndpoint"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "inbound_endpoint"
        ],
        "type": "object"
      },
      "sylphx.events.v1.CreateQueueRequest": {
        "description": "The request of CreateQueue.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Queue"
          },
          "queue": {
            "$ref": "#/components/schemas/sylphx.events.v1.Queue",
            "description": "The queue to create; only caller-writable fields are read."
          },
          "queue_id": {
            "description": "The queue id, the final name segment; the server assigns one when empty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "queue"
        ],
        "type": "object"
      },
      "sylphx.events.v1.CreateRealtimeChannelRequest": {
        "description": "The request of CreateRealtimeChannel.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/RealtimeChannel"
          },
          "realtime_channel": {
            "$ref": "#/components/schemas/sylphx.events.v1.RealtimeChannel",
            "description": "The realtime channel to create; only caller-writable fields are read."
          },
          "realtime_channel_id": {
            "description": "The realtime channel id, the final name segment; the server assigns one\nwhen empty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "realtime_channel"
        ],
        "type": "object"
      },
      "sylphx.events.v1.CreateSubscriptionRequest": {
        "description": "The request of CreateSubscription.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Subscription"
          },
          "subscription": {
            "$ref": "#/components/schemas/sylphx.events.v1.Subscription",
            "description": "The subscription to create; only caller-writable fields are read."
          },
          "subscription_id": {
            "description": "The subscription id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "subscription"
        ],
        "type": "object"
      },
      "sylphx.events.v1.CreateTopicRequest": {
        "description": "The request of CreateTopic.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Topic"
          },
          "topic": {
            "$ref": "#/components/schemas/sylphx.events.v1.Topic",
            "description": "The topic to create; only caller-writable fields are read."
          },
          "topic_id": {
            "description": "The topic id, the final name segment; the server assigns one when empty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "topic"
        ],
        "type": "object"
      },
      "sylphx.events.v1.CreateWebhookEndpointRequest": {
        "description": "The request of CreateWebhookEndpoint.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/WebhookEndpoint"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          },
          "webhook_endpoint": {
            "$ref": "#/components/schemas/sylphx.events.v1.WebhookEndpoint",
            "description": "The webhook endpoint to create; only caller-writable fields are read."
          },
          "webhook_endpoint_id": {
            "description": "The webhook endpoint id, the final name segment; the server assigns one\nwhen empty.",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "webhook_endpoint"
        ],
        "type": "object"
      },
      "sylphx.events.v1.DeleteInboundEndpointRequest": {
        "description": "The request of DeleteInboundEndpoint.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the inbound endpoint does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the inbound endpoint to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/InboundEndpoint"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.DeleteQueueRequest": {
        "description": "The request of DeleteQueue.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the queue does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the queue to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Queue"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.DeleteRealtimeChannelRequest": {
        "description": "The request of DeleteRealtimeChannel.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the realtime channel does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete the channel's history. Without it, a channel with retained\nmessages is still deleted and its history stops being readable.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the realtime channel to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/RealtimeChannel"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.DeleteSubscriptionRequest": {
        "description": "The request of DeleteSubscription.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the subscription does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the subscription to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Subscription"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.DeleteTopicRequest": {
        "description": "The request of DeleteTopic.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the topic does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete the Topic's Subscriptions; without it a Topic with\nSubscriptions fails with INVALID_STATE.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the topic to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Topic"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.DeleteWebhookEndpointRequest": {
        "description": "The request of DeleteWebhookEndpoint.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the webhook endpoint does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete the endpoint's delivery records and the Subscriptions that\ntarget it.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the webhook endpoint to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/WebhookEndpoint"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.DeliveryAttempt": {
        "description": "One attempt of a webhook delivery and its receipt.",
        "properties": {
          "attempt_number": {
            "description": "The attempt number, from 1.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "end_time": {
            "description": "When the attempt ended.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "error_code": {
            "description": "A machine-readable failure code.",
            "readOnly": true,
            "type": "string"
          },
          "evidence_digest": {
            "description": "`sha256:<hex>` of the recorded response evidence.",
            "readOnly": true,
            "type": "string"
          },
          "http_status": {
            "description": "The endpoint's HTTP status, when it answered.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "outcome": {
            "$ref": "#/components/schemas/sylphx.events.v1.DeliveryAttemptOutcome",
            "description": "How the attempt ended.",
            "readOnly": true
          },
          "start_time": {
            "description": "When the attempt started.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.DeliveryAttemptOutcome": {
        "description": "How one delivery attempt ended.",
        "enum": [
          "delivered",
          "retryable_failure",
          "terminal_failure",
          "ambiguous"
        ],
        "type": "string"
      },
      "sylphx.events.v1.DeliveryState": {
        "description": "The state of one webhook delivery.",
        "enum": [
          "pending",
          "delivered",
          "dead_lettered",
          "cancelled"
        ],
        "type": "string"
      },
      "sylphx.events.v1.Event": {
        "description": "An Event is one published CloudEvents 1.0 fact, as stored. It is immutable.",
        "properties": {
          "admit_time": {
            "description": "When Events admitted it.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "data": {
            "description": "The payload.",
            "readOnly": true
          },
          "data_content_type": {
            "description": "The CloudEvents `datacontenttype`.",
            "readOnly": true,
            "type": "string"
          },
          "data_schema": {
            "description": "The CloudEvents `dataschema`.",
            "readOnly": true,
            "type": "string"
          },
          "event_id": {
            "description": "The producer's CloudEvents `id`, unique per `source`.",
            "readOnly": true,
            "type": "string"
          },
          "event_time": {
            "description": "The CloudEvents `time`.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "extensions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "CloudEvents extension attributes.",
            "readOnly": true,
            "type": "object"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/events/{event}`.",
            "type": "string"
          },
          "source": {
            "description": "The producer's CloudEvents `source`.",
            "readOnly": true,
            "type": "string"
          },
          "subject": {
            "description": "The CloudEvents `subject`.",
            "readOnly": true,
            "type": "string"
          },
          "topic": {
            "description": "The Topic it was published to.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Topic"
          },
          "type": {
            "description": "The CloudEvents `type`.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`evt_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.GetConnectorRequest": {
        "description": "The request of GetConnector.",
        "properties": {
          "name": {
            "description": "The name of the connector to get.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Connector"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.GetEventRequest": {
        "description": "The request of GetEvent.",
        "properties": {
          "name": {
            "description": "The name of the event to get.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Event"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.GetInboundEndpointRequest": {
        "description": "The request of GetInboundEndpoint.",
        "properties": {
          "name": {
            "description": "The name of the inbound endpoint to get.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/InboundEndpoint"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.GetQueueRequest": {
        "description": "The request of GetQueue.",
        "properties": {
          "name": {
            "description": "The name of the queue to get.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Queue"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.GetRealtimeChannelRequest": {
        "description": "The request of GetRealtimeChannel.",
        "properties": {
          "name": {
            "description": "The name of the realtime channel to get.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/RealtimeChannel"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.GetRealtimeMemberRequest": {
        "description": "The request of GetRealtimeMember.",
        "properties": {
          "name": {
            "description": "The name of the member.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/RealtimeMember"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.GetRealtimeMessageRequest": {
        "description": "The request of GetRealtimeMessage.",
        "properties": {
          "name": {
            "description": "The name of the message.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/RealtimeMessage"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.GetSubscriptionRequest": {
        "description": "The request of GetSubscription.",
        "properties": {
          "name": {
            "description": "The name of the subscription to get.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Subscription"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.GetTopicRequest": {
        "description": "The request of GetTopic.",
        "properties": {
          "name": {
            "description": "The name of the topic to get.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Topic"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.GetWebhookDeliveryRequest": {
        "description": "The request of GetWebhookDelivery.",
        "properties": {
          "name": {
            "description": "The name of the webhook delivery to get.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/WebhookDelivery"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.GetWebhookEndpointRequest": {
        "description": "The request of GetWebhookEndpoint.",
        "properties": {
          "name": {
            "description": "The name of the webhook endpoint to get.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/WebhookEndpoint"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.InboundEndpoint": {
        "description": "An Inbound Endpoint receives a provider's webhooks. Events verifies the\nprovider signature with a secret in Sylphx Secrets, dedupes by the\nprovider's delivery id, answers 2xx inside the provider's budget, persists\nthe raw request, then publishes it onto a Topic. A bad signature is refused\nand recorded.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/inbound_endpoints/{inbound_endpoint}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.events.v1.InboundEndpointSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.events.v1.InboundEndpointStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`ibe_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.events.v1.InboundEndpointSpec": {
        "description": "InboundEndpointSpec is the caller-writable state of an InboundEndpoint.",
        "properties": {
          "signature_scheme": {
            "$ref": "#/components/schemas/sylphx.events.v1.InboundSignatureScheme",
            "description": "The sender's signature scheme."
          },
          "source": {
            "description": "The CloudEvents `source` of published events; default the endpoint name.",
            "type": "string"
          },
          "topic": {
            "description": "The Topic verified requests are published to.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Topic"
          },
          "verification_secret": {
            "description": "The provider's verification secret, held in Sylphx Secrets.",
            "type": "string"
          }
        },
        "required": [
          "signature_scheme",
          "verification_secret",
          "topic"
        ],
        "type": "object"
      },
      "sylphx.events.v1.InboundEndpointStatus": {
        "description": "InboundEndpointStatus is the observed state of an InboundEndpoint.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "last_receive_time": {
            "description": "The last verified request.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "receive_uri": {
            "description": "The URI to give the provider.",
            "readOnly": true,
            "type": "string"
          },
          "rejected_count": {
            "description": "Requests refused for a bad signature, all time.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.InboundSignatureScheme": {
        "description": "The signature scheme an Inbound Endpoint verifies.",
        "enum": [
          "standard_webhooks",
          "stripe",
          "shopify",
          "github"
        ],
        "type": "string"
      },
      "sylphx.events.v1.IssueRealtimeChannelTokenRequest": {
        "description": "The request of IssueRealtimeChannelToken.",
        "properties": {
          "client_data": {
            "description": "The client's presence data, at most 4 KiB as JSON."
          },
          "client_id": {
            "description": "The client this token is for; with it, the connection enters presence.",
            "type": "string"
          },
          "name": {
            "description": "The name of the realtime channel.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/RealtimeChannel"
          },
          "ttl": {
            "description": "How long the token lives; default and at most 1 hour, at least 1 minute.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.IssueRealtimeChannelTokenResponse": {
        "description": "The response of IssueRealtimeChannelToken.",
        "properties": {
          "connect_uri": {
            "description": "The URI to connect to with it.",
            "type": "string"
          },
          "expire_time": {
            "description": "When it stops being accepted.",
            "format": "date-time",
            "type": "string"
          },
          "token": {
            "description": "The token (`rtt_…`); present it as `Authorization: Bearer` or the\n`token` query parameter of the connect URI.",
            "type": "string",
            "x-sylphx-sensitive": true
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.LeaseQueueMessagesRequest": {
        "description": "The request of LeaseQueueMessages.",
        "properties": {
          "max_messages": {
            "description": "At most this many; default 1, at most 100.",
            "format": "int32",
            "type": "integer"
          },
          "name": {
            "description": "The name of the queue.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Queue"
          },
          "visibility_timeout": {
            "description": "Override the Queue's visibility timeout for this lease.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "wait": {
            "description": "Wait up to this long (at most 20s) for a message when none is ready.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.LeaseQueueMessagesResponse": {
        "description": "The response of LeaseQueueMessages.",
        "properties": {
          "messages": {
            "description": "The leased messages.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.LeasedMessage"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.LeasedMessage": {
        "description": "A message under lease.",
        "properties": {
          "delivery_count": {
            "description": "This delivery's number, from 1.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "event": {
            "$ref": "#/components/schemas/sylphx.events.v1.CloudEvent",
            "description": "The event.",
            "readOnly": true
          },
          "lease": {
            "$ref": "#/components/schemas/sylphx.events.v1.MessageLease",
            "description": "The lease to ack or nack with.",
            "readOnly": true
          },
          "lease_expire_time": {
            "description": "When the lease expires and the message is ready again.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "message_id": {
            "description": "The message id, stable across deliveries.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.ListConnectorsRequest": {
        "description": "The request of ListConnectors.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over filterable fields: `kind = email`, `state = active`.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Connector"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ListConnectorsResponse": {
        "description": "The response of ListConnectors.",
        "properties": {
          "connectors": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.Connector"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.ListEventsRequest": {
        "description": "The request of ListEvents.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Event"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ListEventsResponse": {
        "description": "The response of ListEvents.",
        "properties": {
          "events": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.Event"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.ListInboundEndpointsRequest": {
        "description": "The request of ListInboundEndpoints.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/InboundEndpoint"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ListInboundEndpointsResponse": {
        "description": "The response of ListInboundEndpoints.",
        "properties": {
          "inbound_endpoints": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.InboundEndpoint"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.ListQueuesRequest": {
        "description": "The request of ListQueues.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Queue"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ListQueuesResponse": {
        "description": "The response of ListQueues.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "queues": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.Queue"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.ListRealtimeChannelsRequest": {
        "description": "The request of ListRealtimeChannels.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/RealtimeChannel"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ListRealtimeChannelsResponse": {
        "description": "The response of ListRealtimeChannels.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "realtime_channels": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.RealtimeChannel"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.ListRealtimeMembersRequest": {
        "description": "The request of ListRealtimeMembers.",
        "properties": {
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The realtime channel.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/RealtimeMember"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ListRealtimeMembersResponse": {
        "description": "The response of ListRealtimeMembers.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "realtime_members": {
            "description": "The page, by client id.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.RealtimeMember"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.ListRealtimeMessagesRequest": {
        "description": "The request of ListRealtimeMessages.",
        "properties": {
          "filter": {
            "description": "Empty, or `sequence > N` to start after message N (resume).",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The realtime channel.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/RealtimeMessage"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ListRealtimeMessagesResponse": {
        "description": "The response of ListRealtimeMessages.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "realtime_messages": {
            "description": "The page, oldest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.RealtimeMessage"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.ListSubscriptionsRequest": {
        "description": "The request of ListSubscriptions.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Subscription"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ListSubscriptionsResponse": {
        "description": "The response of ListSubscriptions.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "subscriptions": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.Subscription"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.ListTopicsRequest": {
        "description": "The request of ListTopics.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Topic"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ListTopicsResponse": {
        "description": "The response of ListTopics.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "topics": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.Topic"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.ListWebhookDeliveriesRequest": {
        "description": "The request of ListWebhookDeliveries.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/WebhookDelivery"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ListWebhookDeliveriesResponse": {
        "description": "The response of ListWebhookDeliveries.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "webhook_deliveries": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.WebhookDelivery"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.ListWebhookEndpointsRequest": {
        "description": "The request of ListWebhookEndpoints.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/WebhookEndpoint"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ListWebhookEndpointsResponse": {
        "description": "The response of ListWebhookEndpoints.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "webhook_endpoints": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.WebhookEndpoint"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.MessageLease": {
        "description": "A fenced lease on one message.",
        "properties": {
          "lease_generation": {
            "description": "The lease fence: the lease generation this holder was granted.",
            "format": "int64",
            "type": "string"
          },
          "message_id": {
            "description": "The message id.",
            "type": "string"
          }
        },
        "required": [
          "message_id",
          "lease_generation"
        ],
        "type": "object"
      },
      "sylphx.events.v1.NackQueueMessagesRequest": {
        "description": "The request of NackQueueMessages.",
        "properties": {
          "delay": {
            "description": "Hide the messages this long before the next lease.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "leases": {
            "description": "The leases to nack, at most 100.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.MessageLease"
            },
            "type": "array"
          },
          "name": {
            "description": "The name of the queue.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Queue"
          }
        },
        "required": [
          "name",
          "leases"
        ],
        "type": "object"
      },
      "sylphx.events.v1.NackQueueMessagesResponse": {
        "description": "The response of NackQueueMessages.",
        "properties": {
          "stale_leases": {
            "description": "Leases that were stale and not applied.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.MessageLease"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.PublishEventsRequest": {
        "description": "The request of PublishEvents.",
        "properties": {
          "events": {
            "description": "The events, at most 100.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.CloudEvent"
            },
            "type": "array"
          },
          "name": {
            "description": "The name of the topic.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Topic"
          }
        },
        "required": [
          "name",
          "events"
        ],
        "type": "object"
      },
      "sylphx.events.v1.PublishEventsResponse": {
        "description": "The response of PublishEvents.",
        "properties": {
          "events": {
            "description": "The stored events, in request order.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.Event"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.PublishRealtimeMessagesRequest": {
        "description": "The request of PublishRealtimeMessages.",
        "properties": {
          "client_id": {
            "description": "The publisher's client id, shown to subscribers.",
            "type": "string"
          },
          "data": {
            "description": "The payload; at most 64 KiB as JSON."
          },
          "message_type": {
            "description": "The message name, 1 to 255 of `[A-Za-z0-9._:-]`.",
            "type": "string"
          },
          "name": {
            "description": "The name of the realtime channel.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/RealtimeChannel"
          }
        },
        "required": [
          "name",
          "message_type"
        ],
        "type": "object"
      },
      "sylphx.events.v1.PublishRealtimeMessagesResponse": {
        "description": "The response of PublishRealtimeMessages.",
        "properties": {
          "realtime_message": {
            "$ref": "#/components/schemas/sylphx.events.v1.RealtimeMessage",
            "description": "The message as the channel appended it."
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.Queue": {
        "description": "A Queue holds messages for pull consumers. A consumer leases messages for a\nvisibility timeout, then acks or nacks them; a lease is fenced, so a stale\nholder cannot ack a message someone else holds. A message leased\n`max_deliveries` times moves to the dead-letter queue.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/queues/{queue}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.events.v1.QueueSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.events.v1.QueueStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`que_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.events.v1.QueueSpec": {
        "description": "QueueSpec is the caller-writable state of a Queue.",
        "properties": {
          "dead_letter_queue": {
            "description": "The dead-letter Queue; unset keeps exhausted messages in this Queue's own\ndead-letter set.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Queue"
          },
          "max_deliveries": {
            "description": "Deliveries before a message dead-letters; default 5, 1 to 100.",
            "format": "int32",
            "type": "integer"
          },
          "retention": {
            "description": "How long an unacked message is kept; default 4d, at most 14d.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "visibility_timeout": {
            "description": "How long a lease hides a message; default 30s, 1s to 12h.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.QueueStatus": {
        "description": "QueueStatus is the observed state of a Queue.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "dead_letter_count": {
            "description": "Messages in the dead-letter set.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "leased_count": {
            "description": "Messages under lease.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "ready_count": {
            "description": "Messages ready to lease.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.RealtimeChannel": {
        "description": "A Realtime Channel delivers matching events to authorized clients over\nWebSocket or SSE, resumable from a cursor. Subscriptions route events into\nit; Notify's inbox rides it.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/realtime_channels/{realtime_channel}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.events.v1.RealtimeChannelSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.events.v1.RealtimeChannelStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`rtc_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.events.v1.RealtimeChannelSpec": {
        "description": "RealtimeChannelSpec is the caller-writable state of a RealtimeChannel.",
        "properties": {
          "history_retention": {
            "description": "How far back a cursor may resume; default 24h, at most 7d.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "publishable_ok": {
            "description": "Allow clients holding a publishable key (`events:realtime:subscribe`) to\nconnect.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.RealtimeChannelStatus": {
        "description": "RealtimeChannelStatus is the observed state of a RealtimeChannel.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "connect_uri": {
            "description": "The WebSocket URI clients connect to (`wss://…/subscribe`); it pushes\nevery message after the client's cursor and carries presence.",
            "readOnly": true,
            "type": "string"
          },
          "connection_count": {
            "description": "Clients connected now (their presence heartbeat is fresh).",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "stream_uri": {
            "description": "The Server-Sent Events URI (`https://…/stream`), for clients that only\nread; it resumes from `Last-Event-ID`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.RealtimeMember": {
        "description": "A Realtime Member is one client present in a channel: connected with a\ntoken that names its client id, entered, and not yet left.",
        "properties": {
          "client_id": {
            "description": "The client id its token names.",
            "readOnly": true,
            "type": "string"
          },
          "connection_count": {
            "description": "Open connections of this client in the channel.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "data": {
            "description": "The member's presence data (set at enter, changed by an update).",
            "readOnly": true
          },
          "enter_time": {
            "description": "When the member entered.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`…/realtime_channels/{realtime_channel}/realtime_members/{realtime_member}`.",
            "type": "string"
          },
          "uid": {
            "description": "`rtb_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.RealtimeMessage": {
        "description": "A Realtime Message is one message in a channel's ordered history, kept\nfor the channel's `history_retention`.",
        "properties": {
          "client_id": {
            "description": "The publisher's client id, when it named one.",
            "type": "string"
          },
          "cursor": {
            "description": "The message's place in the channel; send it back as `after_cursor` (or\n`Last-Event-ID`) to resume after it.",
            "readOnly": true,
            "type": "string"
          },
          "data": {
            "description": "The payload."
          },
          "message_type": {
            "description": "The message name (`chat.message`, `presence.enter`, …).",
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`…/realtime_channels/{realtime_channel}/realtime_messages/{realtime_message}`.",
            "type": "string"
          },
          "publish_time": {
            "description": "When the channel appended it.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "sequence": {
            "description": "The position in the channel, from 1, gap-free.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`rtm_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "message_type"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ReplayQueueRequest": {
        "description": "The request of ReplayQueue.",
        "properties": {
          "end_time": {
            "description": "Replay messages dead-lettered before this time.",
            "format": "date-time",
            "type": "string"
          },
          "name": {
            "description": "The name of the queue.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Queue"
          },
          "start_time": {
            "description": "Replay messages dead-lettered at or after this time.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ReplayQueueResponse": {
        "description": "The response of ReplayQueue.",
        "properties": {
          "replayed_count": {
            "description": "Messages returned to ready.",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.ReplayWebhookDeliveryRequest": {
        "description": "The request of ReplayWebhookDelivery.",
        "properties": {
          "name": {
            "description": "The name of the webhook delivery.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/WebhookDelivery"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ReplayWebhookEndpointRequest": {
        "description": "The request of ReplayWebhookEndpoint.",
        "properties": {
          "end_time": {
            "description": "Replay deliveries created before this time; default now.",
            "format": "date-time",
            "type": "string"
          },
          "name": {
            "description": "The name of the webhook endpoint.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/WebhookEndpoint"
          },
          "start_time": {
            "description": "Replay deliveries created at or after this time.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "name",
          "start_time"
        ],
        "type": "object"
      },
      "sylphx.events.v1.ReplayWebhookEndpointResponse": {
        "description": "The response of ReplayWebhookEndpoint.",
        "properties": {
          "replayed_count": {
            "description": "Deliveries queued again.",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.RotateWebhookEndpointSecretRequest": {
        "description": "The request of RotateWebhookEndpointSecret.",
        "properties": {
          "etag": {
            "description": "Rotate only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the webhook endpoint.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/WebhookEndpoint"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.SendQueueMessagesRequest": {
        "description": "The request of SendQueueMessages.",
        "properties": {
          "delay": {
            "description": "Hide the messages this long before their first lease.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "events": {
            "description": "The messages, at most 100.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.CloudEvent"
            },
            "type": "array"
          },
          "name": {
            "description": "The name of the queue.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Queue"
          }
        },
        "required": [
          "name",
          "events"
        ],
        "type": "object"
      },
      "sylphx.events.v1.SendQueueMessagesResponse": {
        "description": "The response of SendQueueMessages.",
        "properties": {
          "message_ids": {
            "description": "The message ids, in request order.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.Subscription": {
        "description": "A Subscription fans each matching event of a Topic out to one Queue, Webhook\nEndpoint, or Realtime Channel: exactly one message per (subscription,\nevent).",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/subscriptions/{subscription}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.events.v1.SubscriptionSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.events.v1.SubscriptionStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`sub_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.events.v1.SubscriptionSpec": {
        "description": "SubscriptionSpec is the caller-writable state of a Subscription.",
        "properties": {
          "paused": {
            "description": "Whether matching is paused; events published while paused are not\ndelivered.",
            "type": "boolean"
          },
          "queue": {
            "description": "A Queue.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Queue"
          },
          "realtime_channel": {
            "description": "A Realtime Channel.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/RealtimeChannel"
          },
          "sources": {
            "description": "Match these sources; empty matches all.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "topic": {
            "description": "The Topic to read.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "events.sylphx.com/Topic"
          },
          "types": {
            "description": "Match these CloudEvents types; empty matches all. A trailing `*` matches a\nprefix.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "webhook_endpoint": {
            "description": "A Webhook Endpoint.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/WebhookEndpoint"
          }
        },
        "required": [
          "topic"
        ],
        "type": "object"
      },
      "sylphx.events.v1.SubscriptionStatus": {
        "description": "SubscriptionStatus is the observed state of a Subscription.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.TestWebhookEndpointRequest": {
        "description": "The request of TestWebhookEndpoint.",
        "properties": {
          "name": {
            "description": "The name of the webhook endpoint.",
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/WebhookEndpoint"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.events.v1.TestWebhookEndpointResponse": {
        "description": "The response of TestWebhookEndpoint.",
        "properties": {
          "webhook_delivery": {
            "$ref": "#/components/schemas/sylphx.events.v1.WebhookDelivery",
            "description": "The delivery of the test event; read it back for its attempts."
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.Topic": {
        "description": "A Topic is a named stream producers publish CloudEvents into. An event is\nimmutable and deduplicated by `source` + `id` within the Topic; a different\npayload under the same pair is a conflict, never a second fact.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/topics/{topic}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.events.v1.TopicSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.events.v1.TopicStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`top_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.events.v1.TopicSpec": {
        "description": "TopicSpec is the caller-writable state of a Topic.",
        "properties": {
          "retention": {
            "description": "How long published events stay readable and replayable; default 7d, at\nmost 30d.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.TopicStatus": {
        "description": "TopicStatus is the observed state of a Topic.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.UpdateInboundEndpointRequest": {
        "description": "The request of UpdateInboundEndpoint.",
        "properties": {
          "allow_missing": {
            "description": "Create the inbound endpoint when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "inbound_endpoint": {
            "$ref": "#/components/schemas/sylphx.events.v1.InboundEndpoint",
            "description": "The inbound endpoint to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "inbound_endpoint"
        ],
        "type": "object"
      },
      "sylphx.events.v1.UpdateQueueRequest": {
        "description": "The request of UpdateQueue.",
        "properties": {
          "allow_missing": {
            "description": "Create the queue when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "queue": {
            "$ref": "#/components/schemas/sylphx.events.v1.Queue",
            "description": "The queue to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "queue"
        ],
        "type": "object"
      },
      "sylphx.events.v1.UpdateRealtimeChannelRequest": {
        "description": "The request of UpdateRealtimeChannel.",
        "properties": {
          "allow_missing": {
            "description": "Create the realtime channel when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "realtime_channel": {
            "$ref": "#/components/schemas/sylphx.events.v1.RealtimeChannel",
            "description": "The realtime channel to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "realtime_channel"
        ],
        "type": "object"
      },
      "sylphx.events.v1.UpdateSubscriptionRequest": {
        "description": "The request of UpdateSubscription.",
        "properties": {
          "allow_missing": {
            "description": "Create the subscription when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "subscription": {
            "$ref": "#/components/schemas/sylphx.events.v1.Subscription",
            "description": "The subscription to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "subscription"
        ],
        "type": "object"
      },
      "sylphx.events.v1.UpdateTopicRequest": {
        "description": "The request of UpdateTopic.",
        "properties": {
          "allow_missing": {
            "description": "Create the topic when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "topic": {
            "$ref": "#/components/schemas/sylphx.events.v1.Topic",
            "description": "The topic to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "topic"
        ],
        "type": "object"
      },
      "sylphx.events.v1.UpdateWebhookEndpointRequest": {
        "description": "The request of UpdateWebhookEndpoint.",
        "properties": {
          "allow_missing": {
            "description": "Create the webhook endpoint when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          },
          "webhook_endpoint": {
            "$ref": "#/components/schemas/sylphx.events.v1.WebhookEndpoint",
            "description": "The webhook endpoint to update; `name` identifies it."
          }
        },
        "required": [
          "webhook_endpoint"
        ],
        "type": "object"
      },
      "sylphx.events.v1.WebhookDelivery": {
        "description": "A Webhook Delivery is one event on its way to a Webhook Endpoint, with every\nattempt and its immutable receipt. A receipt is evidence of an endpoint\nresponse, never of a human reading.",
        "properties": {
          "attempts": {
            "description": "Every attempt, oldest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.events.v1.DeliveryAttempt"
            },
            "readOnly": true,
            "type": "array"
          },
          "event": {
            "description": "The Event delivered.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Event"
          },
          "event_type": {
            "description": "The CloudEvents `type` of the event delivered.",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/webhook_endpoints/{webhook_endpoint}/webhook_deliveries/{webhook_delivery}`.",
            "type": "string"
          },
          "next_attempt_time": {
            "description": "When the next attempt is due.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.events.v1.DeliveryState",
            "description": "The delivery state.",
            "readOnly": true
          },
          "subscription": {
            "description": "The Subscription that fanned it out.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "events.sylphx.com/Subscription"
          },
          "uid": {
            "description": "`whd_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.events.v1.WebhookEndpoint": {
        "description": "A Webhook Endpoint is an HTTPS receiver that events of its environment\nwhose type matches `spec.event_types` are delivered to, signed per Standard\nWebhooks (`webhook-id`, `webhook-timestamp`, `webhook-signature`). Failures\nretry on the fixed schedule (immediately, 5s, 5m, 30m, 2h, 5h, 10h, 10h);\nexhausted deliveries dead-letter; an endpoint whose attempts keep failing\nfor five days is disabled.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/webhook_endpoints/{webhook_endpoint}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.events.v1.WebhookEndpointSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.events.v1.WebhookEndpointStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`whe_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.events.v1.WebhookEndpointSpec": {
        "description": "WebhookEndpointSpec is the caller-writable state of a WebhookEndpoint.",
        "properties": {
          "disabled": {
            "description": "Stop delivering; deliveries queue until enabled.",
            "type": "boolean"
          },
          "event_types": {
            "description": "Which event types the endpoint receives: an exact type (`order.paid`), a\nprefix ending in `.*` (`order.*`), or `*` for every type; default `[\"*\"]`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "max_concurrent_deliveries": {
            "description": "At most this many deliveries in flight; default 10.",
            "format": "int32",
            "type": "integer"
          },
          "rate_limit_per_second": {
            "description": "At most this many attempts start per second; 0 is no limit. Deliveries\nover the limit wait their turn; none is dropped.",
            "format": "int32",
            "type": "integer"
          },
          "uri": {
            "description": "The HTTPS URI deliveries are POSTed to; its host resolves to a public\naddress.",
            "type": "string"
          }
        },
        "required": [
          "uri"
        ],
        "type": "object"
      },
      "sylphx.events.v1.WebhookEndpointState": {
        "description": "Whether a Webhook Endpoint receives deliveries.",
        "enum": [
          "enabled",
          "disabled",
          "failing_disabled"
        ],
        "type": "string"
      },
      "sylphx.events.v1.WebhookEndpointStatus": {
        "description": "WebhookEndpointStatus is the observed state of a WebhookEndpoint.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "consecutive_failure_count": {
            "description": "Consecutive failed delivery attempts since the last 2xx.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "disable_reason": {
            "description": "Why Events disabled the endpoint, when it did.",
            "readOnly": true,
            "type": "string"
          },
          "last_success_time": {
            "description": "The last 2xx answer.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "previous_secret_expire_time": {
            "description": "After a rotation, deliveries carry a second signature with the previous\nsecret until this time.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "signing_secret": {
            "description": "The Standard Webhooks signing secret (`whsec_…`). Set only in the answer\nof CreateWebhookEndpoint and RotateWebhookEndpointSecret; every other\nread leaves it empty, and Events never shows it again.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.events.v1.WebhookEndpointState",
            "description": "Whether Events is delivering.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.hosting.v1.AbortRolloutRequest": {
        "description": "The request of AbortRollout.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the rollout.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Rollout"
          },
          "validate_only": {
            "description": "Validate without acting.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.CreatePreviewRequest": {
        "description": "The request of CreatePreview.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Preview"
          },
          "preview": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.Preview",
            "description": "The preview to create; only spec and caller-writable metadata are read."
          },
          "preview_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "preview"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.CreateRolloutRequest": {
        "description": "The request of CreateRollout.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Rollout"
          },
          "rollout": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.Rollout",
            "description": "The rollout to create; only spec and caller-writable metadata are read."
          },
          "rollout_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "rollout"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.CreateServiceRequest": {
        "description": "The request of CreateService.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Service"
          },
          "service": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.Service",
            "description": "The service to create; only spec and caller-writable metadata are read."
          },
          "service_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "service"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.CreateSourceLinkRequest": {
        "description": "The request of CreateSourceLink.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/SourceLink"
          },
          "source_link": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.SourceLink",
            "description": "The source link to create; only spec and caller-writable metadata are\nread."
          },
          "source_link_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "source_link"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.DeletePreviewRequest": {
        "description": "The request of DeletePreview.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the preview to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Preview"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.DeleteServiceRequest": {
        "description": "The request of DeleteService.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete every child Resource; without it a parent with children fails\nwith FAILED_PRECONDITION.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the service to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Service"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.DeleteSourceLinkRequest": {
        "description": "The request of DeleteSourceLink.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the source link to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/SourceLink"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.GetPreviewRequest": {
        "description": "The request of GetPreview.",
        "properties": {
          "name": {
            "description": "The name of the preview to get.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Preview"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.GetRolloutRequest": {
        "description": "The request of GetRollout.",
        "properties": {
          "name": {
            "description": "The name of the rollout to get.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Rollout"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.GetServiceRequest": {
        "description": "The request of GetService.",
        "properties": {
          "name": {
            "description": "The name of the service to get.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Service"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.GetSourceLinkRequest": {
        "description": "The request of GetSourceLink.",
        "properties": {
          "name": {
            "description": "The name of the source link to get.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/SourceLink"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.HealthProtocol": {
        "description": "HealthProtocol is how a Service is probed.",
        "enum": [
          "http",
          "tcp"
        ],
        "type": "string"
      },
      "sylphx.hosting.v1.InstanceSize": {
        "description": "InstanceSize is the machine size of each instance.",
        "enum": [
          "nano",
          "micro",
          "small",
          "standard",
          "large",
          "xlarge",
          "xxlarge"
        ],
        "type": "string"
      },
      "sylphx.hosting.v1.ListPreviewsRequest": {
        "description": "The request of ListPreviews.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Preview"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.ListPreviewsResponse": {
        "description": "The response of ListPreviews.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "previews": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.hosting.v1.Preview"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.hosting.v1.ListServiceRolloutsRequest": {
        "description": "The request of ListServiceRollouts.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Rollout"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.ListServiceRolloutsResponse": {
        "description": "The response of ListServiceRollouts.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "service_rollouts": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.hosting.v1.Rollout"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.hosting.v1.ListServicesRequest": {
        "description": "The request of ListServices.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Service"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.ListServicesResponse": {
        "description": "The response of ListServices.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "services": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.hosting.v1.Service"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.hosting.v1.ListSourceLinksRequest": {
        "description": "The request of ListSourceLinks.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/SourceLink"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.ListSourceLinksResponse": {
        "description": "The response of ListSourceLinks.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "source_links": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.hosting.v1.SourceLink"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.hosting.v1.PauseRolloutRequest": {
        "description": "The request of PauseRollout.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the rollout.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Rollout"
          },
          "validate_only": {
            "description": "Validate without acting.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.Preview": {
        "description": "A Preview is a pull request's own deployment of a Service, built and torn\ndown by the same Git flow.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/previews/{preview}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.PreviewSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.PreviewStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`prv_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.PreviewSpec": {
        "description": "PreviewSpec is the caller-writable state of a Preview.",
        "properties": {
          "pull_request": {
            "description": "The pull request number in the Service's SourceLink repository.",
            "format": "int32",
            "type": "integer",
            "x-sylphx-immutable": true
          },
          "service": {
            "description": "The Service previewed.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "hosting.sylphx.com/Service"
          }
        },
        "required": [
          "service",
          "pull_request"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.PreviewState": {
        "description": "PreviewState is the lifecycle of a Preview.",
        "enum": [
          "building",
          "serving",
          "failed",
          "closed"
        ],
        "type": "string"
      },
      "sylphx.hosting.v1.PreviewStatus": {
        "description": "PreviewStatus is the observed state of a Preview.",
        "properties": {
          "commit": {
            "description": "The head commit now serving.",
            "readOnly": true,
            "type": "string"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "expire_time": {
            "description": "When an idle Preview is torn down.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.PreviewState",
            "description": "The lifecycle state.",
            "readOnly": true
          },
          "uri": {
            "description": "The Preview's URL.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.hosting.v1.ResumeRolloutRequest": {
        "description": "The request of ResumeRollout.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the rollout.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Rollout"
          },
          "validate_only": {
            "description": "Validate without acting.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.Rollout": {
        "description": "A Rollout moves one Service generation to its Release in waves (one canary\ncell, one cell, one region, all); every step is fenced by the Service\ngeneration at the moment of write, and no wave advances without fresh\nrecorded evidence.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/services/{service}/service_rollo\nuts/{rollout}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.RolloutSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.RolloutStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`rol_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.RolloutSpec": {
        "description": "RolloutSpec is the caller-writable state of a Rollout.",
        "properties": {
          "release": {
            "description": "The Release to roll out. Unset rolls out the Service's current generation;\na previous Release rolls back.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "release.sylphx.com/Release"
          },
          "service_generation": {
            "description": "The Service generation this Rollout ships; a write from an older\ngeneration is rejected.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.hosting.v1.RolloutState": {
        "description": "RolloutState is where a Rollout is in its waves.",
        "enum": [
          "pending",
          "progressing",
          "paused",
          "succeeded",
          "aborted",
          "failed",
          "superseded"
        ],
        "type": "string"
      },
      "sylphx.hosting.v1.RolloutStatus": {
        "description": "RolloutStatus is the observed state of a Rollout.",
        "properties": {
          "cells": {
            "description": "The cells serving the new Release.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "end_time": {
            "description": "When the Rollout reached a final state.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "start_time": {
            "description": "When the first wave started.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.RolloutState",
            "description": "Where the Rollout is.",
            "readOnly": true
          },
          "wave": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.RolloutWave",
            "description": "The wave now serving the new Release.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.hosting.v1.RolloutWave": {
        "description": "RolloutWave is one step of a rollout: canary Cell, one Cell, one region,\nall.",
        "enum": [
          "canary",
          "cell",
          "region",
          "all"
        ],
        "type": "string"
      },
      "sylphx.hosting.v1.Service": {
        "description": "A Service is one deployable workload: pushed code builds, ships as a Release\nin waves, serves on its routes, and idles to zero when unused.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/services/{service}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.ServiceSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.ServiceStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`svc_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.ServiceBuild": {
        "description": "ServiceBuild is the build recipe of a Service built from source.",
        "properties": {
          "build_class": {
            "description": "The Build class, `sylphx-<os>-<size>`; default `sylphx-linux-standard`.",
            "type": "string"
          },
          "dockerfile": {
            "description": "A Dockerfile path relative to `root_directory`; unset lets the zero-config\nfrontend detect the stack.",
            "type": "string"
          },
          "root_directory": {
            "description": "The directory inside the repository to build; default the root.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.hosting.v1.ServiceExposure": {
        "description": "ServiceExposure is who can reach a Service.",
        "enum": [
          "public",
          "internal"
        ],
        "type": "string"
      },
      "sylphx.hosting.v1.ServiceHealth": {
        "description": "ServiceHealth is how Hosting decides an instance is serving.",
        "properties": {
          "path": {
            "description": "The HTTP path to probe when `protocol` is HTTP.",
            "type": "string"
          },
          "protocol": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.HealthProtocol",
            "description": "How to probe."
          },
          "startup_timeout": {
            "description": "How long a new instance may take to pass its first probe.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "protocol"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.ServiceScaling": {
        "description": "ServiceScaling bounds a Service's instances. A Service idles to zero unless\n`min_instances` is set.",
        "properties": {
          "max_instances": {
            "description": "Instances at most; 0 means the plan's limit.",
            "format": "int32",
            "type": "integer"
          },
          "min_instances": {
            "description": "Instances kept running with no traffic; 0 idles to zero and wakes on\nrequest.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.hosting.v1.ServiceSource": {
        "description": "ServiceSource is what a Service runs: a repository built by Build, or an\nexisting Artifact.",
        "properties": {
          "branch": {
            "description": "The branch that ships to this Service; default the SourceLink's production\nbranch. Ignored for `image`.",
            "type": "string"
          },
          "build": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.ServiceBuild",
            "description": "How Build turns the source into an image. Ignored for `image`."
          },
          "image": {
            "description": "Run this Artifact, by digest: `registry.sylphx.net/<path>@sha256:<hex>`.",
            "type": "string"
          },
          "source_link": {
            "description": "Build from this SourceLink's repository on every push to `branch`.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/SourceLink"
          }
        },
        "type": "object"
      },
      "sylphx.hosting.v1.ServiceSpec": {
        "description": "ServiceSpec is the caller-writable state of a Service.",
        "properties": {
          "command": {
            "description": "Overrides the image's command.",
            "type": "string"
          },
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Plain environment variables. Secret values bind through `secret_env`,\nnever here.",
            "type": "object"
          },
          "exposure": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.ServiceExposure",
            "description": "Who can reach the Service; default PUBLIC."
          },
          "health": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.ServiceHealth",
            "description": "How instances are probed."
          },
          "port": {
            "description": "The port the application listens on; the public edge stays 443.",
            "format": "int32",
            "type": "integer"
          },
          "regions": {
            "description": "Regions to run in; default the project's home region.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "scaling": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.ServiceScaling",
            "description": "Instance bounds."
          },
          "secret_env": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment variables bound to Sylphx Secrets: variable name to Secret\nname. The value never enters the spec.",
            "type": "object"
          },
          "size": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.InstanceSize",
            "description": "The size of each instance; default the plan's."
          },
          "source": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.ServiceSource",
            "description": "What the Service runs."
          }
        },
        "required": [
          "source"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.ServiceStatus": {
        "description": "ServiceStatus is the observed state of a Service.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "image": {
            "description": "The image digest now serving.",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "ready_instances": {
            "description": "Instances passing health, summed over cells.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "release": {
            "description": "The Sylphx Release now serving.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "release.sylphx.com/Release"
          },
          "rollout": {
            "description": "The Rollout in progress, if any.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Rollout"
          },
          "uri": {
            "description": "The default URL: `https://<ref>.sylphx.app`, or `*.unclaimed.sylphx.app`\nfor an unclaimed project.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.hosting.v1.SourceLink": {
        "description": "A SourceLink links a project to one repository through Sylphx Connections.\nSource is read at an exact commit with a token from the credential service\nnarrowed to that repository; a webhook is only a latency hint.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/source_links/{source_link}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.SourceLinkSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.SourceLinkStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`src_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.SourceLinkSpec": {
        "description": "SourceLinkSpec is the caller-writable state of a SourceLink.",
        "properties": {
          "connection": {
            "description": "The forge Connection (the Sylphx App installation).",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "connections.sylphx.com/Connection"
          },
          "previews_enabled": {
            "description": "Build a Preview for every pull request.",
            "type": "boolean"
          },
          "production_branch": {
            "description": "The branch production Services ship from; default the repository's default\nbranch.",
            "type": "string"
          },
          "repository": {
            "description": "The repository, `<owner>/<name>`.",
            "type": "string",
            "x-sylphx-immutable": true
          }
        },
        "required": [
          "connection",
          "repository"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.SourceLinkStatus": {
        "description": "SourceLinkStatus is the observed state of a SourceLink.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "default_branch": {
            "description": "The repository's default branch.",
            "readOnly": true,
            "type": "string"
          },
          "head_commit": {
            "description": "The last seen head of `production_branch`.",
            "readOnly": true,
            "type": "string"
          },
          "last_delivery_time": {
            "description": "When the inbox or reconciler last recorded a change.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.hosting.v1.UpdateServiceRequest": {
        "description": "The request of UpdateService.",
        "properties": {
          "allow_missing": {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "service": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.Service",
            "description": "The service to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "service"
        ],
        "type": "object"
      },
      "sylphx.hosting.v1.UpdateSourceLinkRequest": {
        "description": "The request of UpdateSourceLink.",
        "properties": {
          "allow_missing": {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "source_link": {
            "$ref": "#/components/schemas/sylphx.hosting.v1.SourceLink",
            "description": "The source link to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "source_link"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.CreateKeyRequest": {
        "description": "The request of CreateKey.",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/sylphx.keys.v1.Key",
            "description": "The key to create; only spec and caller-writable metadata are read."
          },
          "key_id": {
            "description": "The id of the new key, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/Key"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "key"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.DecryptRequest": {
        "description": "The request of Decrypt.",
        "properties": {
          "additional_authenticated_data": {
            "contentEncoding": "base64",
            "description": "The additional authenticated data given to Encrypt.",
            "type": "string"
          },
          "ciphertext": {
            "contentEncoding": "base64",
            "description": "The ciphertext from Encrypt.",
            "type": "string"
          },
          "name": {
            "description": "The key to use.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/Key"
          }
        },
        "required": [
          "name",
          "ciphertext"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.DecryptResponse": {
        "description": "The response of Decrypt.",
        "properties": {
          "key_version": {
            "description": "The version that decrypted.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
          },
          "plaintext": {
            "contentEncoding": "base64",
            "description": "The plaintext.",
            "type": "string",
            "x-sylphx-sensitive": true
          }
        },
        "type": "object"
      },
      "sylphx.keys.v1.DeleteKeyRequest": {
        "description": "The request of DeleteKey.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete every child Resource; without it a parent with children\nfails with FAILED_PRECONDITION.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the key to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/Key"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.DestroyKeyVersionRequest": {
        "description": "The request of DestroyKeyVersion.",
        "properties": {
          "etag": {
            "description": "Destroy only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the key version to destroy.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
          },
          "validate_only": {
            "description": "Validate without destroying.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.EncryptRequest": {
        "description": "The request of Encrypt.",
        "properties": {
          "additional_authenticated_data": {
            "contentEncoding": "base64",
            "description": "Data bound to the ciphertext and required again to decrypt it.",
            "type": "string"
          },
          "name": {
            "description": "The key to use.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/Key"
          },
          "plaintext": {
            "contentEncoding": "base64",
            "description": "The plaintext, at most 64 KiB.",
            "type": "string",
            "x-sylphx-sensitive": true
          }
        },
        "required": [
          "name",
          "plaintext"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.EncryptResponse": {
        "description": "The response of Encrypt.",
        "properties": {
          "ciphertext": {
            "contentEncoding": "base64",
            "description": "The ciphertext; it names the version that made it.",
            "type": "string"
          },
          "key_version": {
            "description": "The version that encrypted.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
          }
        },
        "type": "object"
      },
      "sylphx.keys.v1.GetKeyRequest": {
        "description": "The request of GetKey.",
        "properties": {
          "name": {
            "description": "The name of the key to get.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/Key"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.GetKeyVersionRequest": {
        "description": "The request of GetKeyVersion.",
        "properties": {
          "name": {
            "description": "The name of the key version to get.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.Key": {
        "description": "A Key is a non-exportable key on the regional signer: a handle for\nsigning, encryption, or MAC. Rotation adds a version and keeps the old\none usable for verification and decryption until it is destroyed.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/keys/{key}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.keys.v1.KeySpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.keys.v1.KeyStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`kms_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.KeyAlgorithm": {
        "description": "KeyAlgorithm is a Key's algorithm.",
        "enum": [
          "ed25519",
          "ec_p256_sha256",
          "rsa_pkcs1_2048_sha256",
          "rsa_pss_3072_sha256",
          "aes_256_gcm",
          "hmac_sha256"
        ],
        "type": "string"
      },
      "sylphx.keys.v1.KeyOrigin": {
        "description": "KeyOrigin is where a Key's material came from.",
        "enum": [
          "generated",
          "imported"
        ],
        "type": "string"
      },
      "sylphx.keys.v1.KeyPurpose": {
        "description": "KeyPurpose is what a Key does.",
        "enum": [
          "sign",
          "encrypt",
          "mac"
        ],
        "type": "string"
      },
      "sylphx.keys.v1.KeySpec": {
        "description": "KeySpec is the caller-writable state of a Key.",
        "properties": {
          "algorithm": {
            "$ref": "#/components/schemas/sylphx.keys.v1.KeyAlgorithm",
            "description": "The algorithm; it must suit the purpose.",
            "x-sylphx-immutable": true
          },
          "deletion_protection": {
            "description": "While true, Delete fails with DELETION_PROTECTED. Default true.",
            "type": "boolean"
          },
          "purpose": {
            "$ref": "#/components/schemas/sylphx.keys.v1.KeyPurpose",
            "description": "What the key does.",
            "x-sylphx-immutable": true
          },
          "rotation_period": {
            "description": "Rotate automatically this often; unset means rotate only on request.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "purpose",
          "algorithm"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.KeyStatus": {
        "description": "KeyStatus is the observed state of a Key.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "next_rotation_time": {
            "description": "When the next automatic rotation runs.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "origin": {
            "$ref": "#/components/schemas/sylphx.keys.v1.KeyOrigin",
            "description": "Where the key material came from.",
            "readOnly": true
          },
          "primary_version": {
            "description": "The version Sign, Encrypt, and MacSign use.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
          },
          "regions": {
            "description": "The regions whose signer holds the key.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.keys.v1.KeyVersion": {
        "description": "A KeyVersion is one generation of a Key's material. Its private or\nsymmetric material never leaves the signer; an asymmetric version\npublishes its public key.",
        "properties": {
          "algorithm": {
            "$ref": "#/components/schemas/sylphx.keys.v1.KeyAlgorithm",
            "description": "The algorithm, equal to the key's.",
            "readOnly": true
          },
          "destroy_time": {
            "description": "When the version's material is destroyed, or was.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata.",
            "readOnly": true
          },
          "name": {
            "description": "`…/keys/{key}/key_versions/{key_version}`; the id is the version\nnumber, from 1.",
            "type": "string"
          },
          "public_key_pem": {
            "description": "The public key in PEM (SubjectPublicKeyInfo), for asymmetric keys; empty\notherwise.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.keys.v1.KeyVersionState",
            "description": "The version's lifecycle state.",
            "readOnly": true
          },
          "uid": {
            "description": "`kmv_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.keys.v1.KeyVersionState": {
        "description": "KeyVersionState is the lifecycle state of a KeyVersion.",
        "enum": [
          "pending",
          "enabled",
          "retired",
          "destroy_scheduled",
          "destroyed"
        ],
        "type": "string"
      },
      "sylphx.keys.v1.ListKeyVersionsRequest": {
        "description": "The request of ListKeyVersions.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The key to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.ListKeyVersionsResponse": {
        "description": "The response of ListKeyVersions.",
        "properties": {
          "key_versions": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.keys.v1.KeyVersion"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.keys.v1.ListKeysRequest": {
        "description": "The request of ListKeys.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/Key"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.ListKeysResponse": {
        "description": "The response of ListKeys.",
        "properties": {
          "keys": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.keys.v1.Key"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.keys.v1.MacSignRequest": {
        "description": "The request of MacSign.",
        "properties": {
          "data": {
            "contentEncoding": "base64",
            "description": "The message, at most 64 KiB.",
            "type": "string"
          },
          "key_version": {
            "description": "The version to use; default the primary version.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
          },
          "name": {
            "description": "The key to use.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/Key"
          }
        },
        "required": [
          "name",
          "data"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.MacSignResponse": {
        "description": "The response of MacSign.",
        "properties": {
          "key_version": {
            "description": "The version that computed the MAC.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
          },
          "mac": {
            "contentEncoding": "base64",
            "description": "The MAC.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.keys.v1.MacVerifyRequest": {
        "description": "The request of MacVerify.",
        "properties": {
          "data": {
            "contentEncoding": "base64",
            "description": "The message.",
            "type": "string"
          },
          "key_version": {
            "description": "The version to use; default the primary version.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
          },
          "mac": {
            "contentEncoding": "base64",
            "description": "The MAC to check.",
            "type": "string"
          },
          "name": {
            "description": "The key to use.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/Key"
          }
        },
        "required": [
          "name",
          "data",
          "mac"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.MacVerifyResponse": {
        "description": "The response of MacVerify.",
        "properties": {
          "valid": {
            "description": "The MAC is valid.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.keys.v1.RotateKeyRequest": {
        "description": "The request of RotateKey.",
        "properties": {
          "etag": {
            "description": "Rotate only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the key to rotate.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/Key"
          },
          "validate_only": {
            "description": "Validate without rotating.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.SignRequest": {
        "description": "The request of Sign.",
        "properties": {
          "data": {
            "contentEncoding": "base64",
            "description": "The message to sign, at most 64 KiB. Set exactly one of `data` and\n`digest`.",
            "type": "string"
          },
          "digest": {
            "contentEncoding": "base64",
            "description": "The digest of the message under the algorithm's hash.",
            "type": "string"
          },
          "key_version": {
            "description": "The version to use; default the primary version.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
          },
          "name": {
            "description": "The key to use.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/Key"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.SignResponse": {
        "description": "The response of Sign.",
        "properties": {
          "key_version": {
            "description": "The version that signed.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
          },
          "signature": {
            "contentEncoding": "base64",
            "description": "The signature.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.keys.v1.UpdateKeyRequest": {
        "description": "The request of UpdateKey.",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/sylphx.keys.v1.Key",
            "description": "The key to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "key"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.VerifyRequest": {
        "description": "The request of Verify.",
        "properties": {
          "data": {
            "contentEncoding": "base64",
            "description": "The signed message. Set exactly one of `data` and `digest`.",
            "type": "string"
          },
          "digest": {
            "contentEncoding": "base64",
            "description": "The digest of the signed message.",
            "type": "string"
          },
          "key_version": {
            "description": "The version to use; default the primary version; the signature names none.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
          },
          "name": {
            "description": "The key to use.",
            "type": "string",
            "x-sylphx-resource-reference": "keys.sylphx.com/Key"
          },
          "signature": {
            "contentEncoding": "base64",
            "description": "The signature to check.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "signature"
        ],
        "type": "object"
      },
      "sylphx.keys.v1.VerifyResponse": {
        "description": "The response of Verify.",
        "properties": {
          "valid": {
            "description": "The signature is valid.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.AskEntitiesRequest": {
        "description": "The request of AskEntities.",
        "properties": {
          "parent": {
            "description": "The environment whose graph to ask.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          },
          "question": {
            "description": "The question, in natural language; 1 to 4000 characters.",
            "type": "string"
          },
          "spaces": {
            "description": "The spaces to answer from, as resource names; default every space the\ncaller may read. At most 50.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Space"
          },
          "valid_time": {
            "description": "Answer about the graph as it was valid at this time; default now.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "question"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.AskEntitiesResponse": {
        "description": "The response of AskEntities.",
        "properties": {
          "answer": {
            "description": "The answer, built only from the context pack. Empty when the pack holds\nnothing that answers the question.",
            "type": "string"
          },
          "citations": {
            "description": "The episodes the answer cites.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.Citation"
            },
            "type": "array"
          },
          "context": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.ContextPack",
            "description": "The context pack the answer was built from."
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.Channel": {
        "description": "Channel is the path a write took.",
        "enum": [
          "api",
          "tool",
          "import",
          "extraction"
        ],
        "type": "string"
      },
      "sylphx.knowledge.v1.Citation": {
        "description": "A Citation points at an episode a result comes from.",
        "properties": {
          "episode": {
            "description": "The episode.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Episode"
          },
          "occur_time": {
            "description": "When the episode happened.",
            "format": "date-time",
            "type": "string"
          },
          "score": {
            "description": "The fused relevance score, higher is more relevant.",
            "type": "number"
          },
          "snippet": {
            "description": "The passage of the episode that supports the result.",
            "type": "string"
          },
          "space": {
            "description": "The episode's space.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Space"
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.CloseRelationRequest": {
        "description": "The request of CloseRelation.",
        "properties": {
          "etag": {
            "description": "Close only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The fact to close.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Relation"
          },
          "valid_end_time": {
            "description": "When the fact stopped holding in the world; default now.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.ContextPack": {
        "description": "A ContextPack is what recall found: entities, facts with their time, and\ncitations, all readable by the caller.",
        "properties": {
          "citations": {
            "description": "The episodes the facts and entities come from.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.Citation"
            },
            "type": "array"
          },
          "entities": {
            "description": "The entities, most relevant first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity"
            },
            "type": "array"
          },
          "facts": {
            "description": "The facts, most relevant first, with their valid and recorded time.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.Relation"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.CreateEntityRequest": {
        "description": "The request of CreateEntity.",
        "properties": {
          "entity": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity",
            "description": "The entity to create; only caller-writable fields are read."
          },
          "entity_id": {
            "description": "The entity id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "entity"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.CreateEpisodeRequest": {
        "description": "The request of CreateEpisode.",
        "properties": {
          "episode": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Episode",
            "description": "The episode to create; only caller-writable fields are read."
          },
          "episode_id": {
            "description": "The episode id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Episode"
          },
          "skip_extraction": {
            "description": "Record the episode without extraction, for content that is already\nstructured or must not be read by a model.",
            "type": "boolean"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "episode"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.CreateKnowledgeSchemaRequest": {
        "description": "The request of CreateKnowledgeSchema.",
        "properties": {
          "knowledge_schema": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.KnowledgeSchema",
            "description": "The knowledge schema to create; only caller-writable fields are read."
          },
          "knowledge_schema_id": {
            "description": "The knowledge schema id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/KnowledgeSchema"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "knowledge_schema"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.CreateRelationRequest": {
        "description": "The request of CreateRelation.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Relation"
          },
          "relation": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Relation",
            "description": "The relation to create; only caller-writable fields are read."
          },
          "relation_id": {
            "description": "The relation id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "relation"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.CreateSpaceRequest": {
        "description": "The request of CreateSpace.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Space"
          },
          "space": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Space",
            "description": "The space to create; only caller-writable fields are read."
          },
          "space_id": {
            "description": "The space id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "space"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.DeleteEntityRequest": {
        "description": "The request of DeleteEntity.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the entity does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete the episodes this person wrote (a data-rights erasure).",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the entity to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.DeleteEpisodeRequest": {
        "description": "The request of DeleteEpisode.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the episode does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the episode to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Episode"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.DeleteKnowledgeSchemaRequest": {
        "description": "The request of DeleteKnowledgeSchema.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the knowledge schema does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the knowledge schema to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/KnowledgeSchema"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.DeleteRelationRequest": {
        "description": "The request of DeleteRelation.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the relation does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the relation to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Relation"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.DeleteSpaceRequest": {
        "description": "The request of DeleteSpace.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the space does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete the space's episodes and facts; without it, a space that\nholds records is refused with `INVALID_STATE`.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the space to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Space"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.Entity": {
        "description": "An Entity is a thing with identity: a typed node with a title, aliases,\nproperties and external ids. Its identity is one per graph (the\nenvironment), so one person is one entity across every space; it is\nvisible to a reader who may read its home space or at least one of its\nfacts.",
        "properties": {
          "aliases": {
            "description": "Other names it is known by; at most 50.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "create_time": {
            "description": "When the entity was first recorded.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "entity_type": {
            "description": "The type: a core type (`person`, `organisation`, `customer`, `contact`,\n`product`, `project`, `document`, `decision`, `playbook`, `case`,\n`topic`) or a type of an accepted Knowledge Schema, `<schema>.<type>`.",
            "type": "string"
          },
          "external_ids": {
            "description": "Identifiers in other systems. Two writes with the same external id in\none graph are the same entity (deterministic resolution). At most 50.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.ExternalId"
            },
            "type": "array"
          },
          "lifecycle": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.EntityLifecycle",
            "description": "Whether the entity stands on its own or was merged into another.",
            "readOnly": true
          },
          "merged_entities": {
            "description": "The entities merged into this one; each can be split back out.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/entities/{entity}`.",
            "type": "string"
          },
          "properties": {
            "additionalProperties": true,
            "description": "Properties, valid against the type's JSON Schema.",
            "type": "object"
          },
          "provenance": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Provenance",
            "description": "Where it came from and who wrote it.",
            "readOnly": true
          },
          "space": {
            "description": "The space the entity was first stated in.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Space"
          },
          "survivor": {
            "description": "The entity this one was merged into, while `lifecycle` is\n`ENTITY_LIFECYCLE_MERGED`.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          },
          "title": {
            "description": "The name people use for it.",
            "type": "string"
          },
          "uid": {
            "description": "`ken_<26 base32>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "update_time": {
            "description": "When the entity last changed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "entity_type",
          "title",
          "space"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.EntityLifecycle": {
        "description": "EntityLifecycle is whether an entity stands on its own.",
        "enum": [
          "active",
          "merged"
        ],
        "type": "string"
      },
      "sylphx.knowledge.v1.EntityTypeDefinition": {
        "description": "An EntityTypeDefinition is one entity type of a schema.",
        "properties": {
          "description": {
            "description": "What the type is, for people and for extraction; at most 1000\ncharacters.",
            "type": "string"
          },
          "match_kinds": {
            "description": "The external id kinds that resolve entities of this type\ndeterministically, for example `email` and `phone` for a contact.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "properties_schema": {
            "additionalProperties": true,
            "description": "The JSON Schema (2020-12) an entity's `properties` must satisfy.",
            "type": "object"
          },
          "type_id": {
            "description": "The type id within the schema, snake_case; entities name it\n`<schema>.<type>`.",
            "type": "string"
          }
        },
        "required": [
          "type_id"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.Episode": {
        "description": "An Episode is the source of everything in the graph: one write as it\nhappened (a note, a message, a step result, a document chunk, an imported\nrow), with its provenance. Creating one is `remember`; extraction reads it\nafterwards and proposes entities and relations that cite it.",
        "properties": {
          "create_time": {
            "description": "When the episode was recorded.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "data": {
            "additionalProperties": true,
            "description": "Structured content, for a caller that already knows the shape (an\nimported row, a form).",
            "type": "object"
          },
          "entities": {
            "description": "The entities the caller says the episode is about, as resource names;\nextraction adds the ones it finds. At most 50.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          },
          "extraction": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Extraction",
            "description": "Where extraction stands.",
            "readOnly": true
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.EpisodeKind",
            "description": "What the episode is."
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/spaces/{space}/episodes/{episode}`.",
            "type": "string"
          },
          "occur_time": {
            "description": "When it happened in the world; default the time it was recorded.",
            "format": "date-time",
            "type": "string"
          },
          "provenance": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Provenance",
            "description": "Where it came from and who wrote it."
          },
          "text": {
            "description": "The text as written, at most 64 KiB. An episode has `text`, `data`, or\nboth.",
            "type": "string"
          },
          "uid": {
            "description": "`epi_<26 base32>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "kind"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.EpisodeKind": {
        "description": "EpisodeKind is what an episode is.",
        "enum": [
          "note",
          "message",
          "step_result",
          "document_chunk",
          "imported_row",
          "structured"
        ],
        "type": "string"
      },
      "sylphx.knowledge.v1.ExternalId": {
        "description": "An ExternalId is an entity's identifier in another system.",
        "properties": {
          "kind": {
            "description": "The kind of identifier: `email`, `phone`, `auth_subject`,\n`channel_user`, `account`, or a caller's own kind.",
            "type": "string"
          },
          "value": {
            "description": "The identifier, normalised (a lowercase email, an E.164 phone number).",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "value"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.Extraction": {
        "description": "Extraction is where reading an episode for entities and relations stands.",
        "enum": [
          "pending",
          "done",
          "failed",
          "skipped"
        ],
        "type": "string"
      },
      "sylphx.knowledge.v1.GetEntityRequest": {
        "description": "The request of GetEntity.",
        "properties": {
          "name": {
            "description": "The name of the entity to get.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.GetEpisodeRequest": {
        "description": "The request of GetEpisode.",
        "properties": {
          "name": {
            "description": "The name of the episode to get.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Episode"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.GetKnowledgeSchemaRequest": {
        "description": "The request of GetKnowledgeSchema.",
        "properties": {
          "name": {
            "description": "The name of the knowledge_schema to get.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/KnowledgeSchema"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.GetRelationRequest": {
        "description": "The request of GetRelation.",
        "properties": {
          "name": {
            "description": "The name of the relation to get.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Relation"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.GetSpaceRequest": {
        "description": "The request of GetSpace.",
        "properties": {
          "name": {
            "description": "The name of the space to get.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Space"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.KnowledgeSchema": {
        "description": "A Knowledge Schema is a published, versioned set of types a graph accepts:\nentity types with a JSON Schema each, and relation types. A type pack (the\ncustomer pack) is a schema, not code. The core schema is built in.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/knowledge_schemas/{knowledge_schema}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.KnowledgeSchemaSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.KnowledgeSchemaStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`ksch_<26 base32>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.KnowledgeSchemaSpec": {
        "description": "KnowledgeSchemaSpec is the caller-writable state of a Knowledge Schema.",
        "properties": {
          "entity_types": {
            "description": "The entity types; at most 200.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.EntityTypeDefinition"
            },
            "type": "array"
          },
          "relation_types": {
            "description": "The relation types; at most 500.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.RelationTypeDefinition"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.KnowledgeSchemaStatus": {
        "description": "KnowledgeSchemaStatus is the observed state of a Knowledge Schema.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "revision": {
            "description": "The published revision; each accepted update adds one. A record keeps\nthe revision it was validated against.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.ListEntitiesRequest": {
        "description": "The request of ListEntities.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, limited to `entity_type` and `lifecycle`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.ListEntitiesResponse": {
        "description": "The response of ListEntities.",
        "properties": {
          "entities": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.ListEpisodesRequest": {
        "description": "The request of ListEpisodes.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, limited to `kind` and `extraction`; for example\n`kind = EPISODE_KIND_NOTE AND extraction = EXTRACTION_DONE`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Episode"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.ListEpisodesResponse": {
        "description": "The response of ListEpisodes.",
        "properties": {
          "episodes": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.Episode"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.ListKnowledgeSchemasRequest": {
        "description": "The request of ListKnowledgeSchemas.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/KnowledgeSchema"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.ListKnowledgeSchemasResponse": {
        "description": "The response of ListKnowledgeSchemas.",
        "properties": {
          "knowledge_schemas": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.KnowledgeSchema"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.ListRelationsRequest": {
        "description": "The request of ListRelations.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, limited to `subject`, `predicate`, `object` and\n`provenance.channel`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Relation"
          },
          "show_superseded": {
            "description": "Also list facts that a newer record replaced.",
            "type": "boolean"
          },
          "valid_time": {
            "description": "List facts as they were valid at this time, including facts closed\nsince; default now.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.ListRelationsResponse": {
        "description": "The response of ListRelations.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "relations": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.Relation"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.ListSpacesRequest": {
        "description": "The request of ListSpaces.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Space"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.ListSpacesResponse": {
        "description": "The response of ListSpaces.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "spaces": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.Space"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.MergeEntityRequest": {
        "description": "The request of MergeEntity.",
        "properties": {
          "entities": {
            "description": "The entities to merge into it; 1 to 20.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          },
          "name": {
            "description": "The entity that survives the merge.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          },
          "reason": {
            "description": "Why they are the same, recorded with the merge; at most 1000\ncharacters.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "entities"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.ProfileEntityRequest": {
        "description": "The request of ProfileEntity.",
        "properties": {
          "max_episodes": {
            "description": "At most this many recent episodes; default 20, clamped to 100.",
            "format": "int32",
            "type": "integer"
          },
          "name": {
            "description": "The entity.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          },
          "valid_time": {
            "description": "The profile as it was valid at this time; default now.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.ProfileEntityResponse": {
        "description": "The response of ProfileEntity.",
        "properties": {
          "entity": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity",
            "description": "The entity."
          },
          "facts": {
            "description": "Its current facts, as subject or object.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.Relation"
            },
            "type": "array"
          },
          "recent_episodes": {
            "description": "The most recent episodes about the entity.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.Citation"
            },
            "type": "array"
          },
          "related_entities": {
            "description": "The other entities those facts name.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.Provenance": {
        "description": "Provenance says where a record came from and who wrote it. A record with\nno source is refused.",
        "properties": {
          "actor": {
            "description": "The caller that made the write when it is not the principal: an agent\n(`agent:<id>`), an app key (`api_key:<id>`) or a connector.",
            "readOnly": true,
            "type": "string"
          },
          "channel": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Channel",
            "description": "The path the write took.",
            "readOnly": true
          },
          "confidence": {
            "description": "For an extracted record, the extractor's confidence, 0 to 1.",
            "readOnly": true,
            "type": "number"
          },
          "method": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.SourceMethod",
            "description": "How the content was produced; default `SOURCE_METHOD_STATED`. Only the\nservice writes `SOURCE_METHOD_EXTRACTED`."
          },
          "model": {
            "description": "For an extracted record, the model id that extracted it.",
            "readOnly": true,
            "type": "string"
          },
          "principal": {
            "description": "The principal the write is attributed to, as a share subject\n(`user:<id>`, `end_user:<id>`): the member or end user an agent or app\nacts for. Set by the server from the caller's credential.",
            "readOnly": true,
            "type": "string"
          },
          "references": {
            "description": "References to where the content came from: a run and step, a work item,\na message, a URL. At most 20.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.SourceRef"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.RecallEntitiesRequest": {
        "description": "The request of RecallEntities.",
        "properties": {
          "entity_types": {
            "description": "Only entities of these types; default every type.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "max_facts": {
            "description": "At most this many facts in the pack; default 30, clamped to 200.",
            "format": "int32",
            "type": "integer"
          },
          "max_hops": {
            "description": "How many hops to expand from the top entities, 0 to 2; default 2.",
            "format": "int32",
            "type": "integer"
          },
          "parent": {
            "description": "The environment whose graph to search.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          },
          "query": {
            "description": "What to recall, in natural language; 1 to 4000 characters.",
            "type": "string"
          },
          "spaces": {
            "description": "The spaces to search, as resource names; default every space the caller\nmay read. At most 50.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Space"
          },
          "valid_time": {
            "description": "Recall the graph as it was valid at this time; default now.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "query"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.RecallEntitiesResponse": {
        "description": "The response of RecallEntities.",
        "properties": {
          "context": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.ContextPack",
            "description": "The context pack."
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.Relation": {
        "description": "A Relation is a fact: a typed, directed edge between two entities, or a\nvalue about one entity. Facts are bi-temporal: `valid_start_time` and\n`valid_end_time` say when it holds in the world, `create_time` and\n`supersede_time` when it was learned and replaced. A change closes the old\nfact; nothing is overwritten. Every fact cites at least one episode.",
        "properties": {
          "create_time": {
            "description": "When the fact was recorded.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "episodes": {
            "description": "The episodes the fact comes from. A structured write with none records\nits own episode and cites it; an extracted fact cites the episodes it was\nread from.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Episode"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/spaces/{space}/relations/{relation}`.",
            "type": "string"
          },
          "object": {
            "description": "The other entity, for an edge. A fact has `object`, `value`, or both.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          },
          "predicate": {
            "description": "The relation type, snake_case, for example `works_at` or `prefers`; a\ncore predicate or one of an accepted Knowledge Schema.",
            "type": "string"
          },
          "provenance": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Provenance",
            "description": "Where it came from and who wrote it.",
            "readOnly": true
          },
          "statement": {
            "description": "The fact as one sentence, used for search and shown with citations.",
            "type": "string"
          },
          "subject": {
            "description": "The entity the fact is about.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          },
          "successor": {
            "description": "The fact that replaced this one, once it is superseded.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Relation"
          },
          "supersede_time": {
            "description": "When the fact was replaced by a newer record; unset while current.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`krel_<26 base32>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "valid_end_time": {
            "description": "When the fact stopped holding in the world; unset while it holds.",
            "format": "date-time",
            "type": "string"
          },
          "valid_start_time": {
            "description": "When the fact starts to hold in the world; default when it was recorded.",
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "description": "The value, for a fact about one entity."
          }
        },
        "required": [
          "subject",
          "predicate"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.RelationTypeDefinition": {
        "description": "A RelationTypeDefinition is one relation type of a schema.",
        "properties": {
          "description": {
            "description": "What the relation means; at most 1000 characters.",
            "type": "string"
          },
          "object_types": {
            "description": "The entity types the object may have; empty is a value fact or any.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "predicate": {
            "description": "The predicate within the schema, snake_case; relations name it\n`<schema>.<predicate>`.",
            "type": "string"
          },
          "subject_types": {
            "description": "The entity types the subject may have; empty is any.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "predicate"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.SourceMethod": {
        "description": "SourceMethod is how a record's content was produced.",
        "enum": [
          "stated",
          "extracted",
          "imported"
        ],
        "type": "string"
      },
      "sylphx.knowledge.v1.SourceRef": {
        "description": "A SourceRef points at where a record's content came from.",
        "properties": {
          "label": {
            "description": "A short label to show with a citation.",
            "type": "string"
          },
          "uri": {
            "description": "A URI: a URL, or a URN of a platform record such as a Workflows run step.",
            "type": "string"
          }
        },
        "required": [
          "uri"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.Space": {
        "description": "A Space is the permission container of the graph: a workspace, a project, a\nteam, one end user's private space, one agent's private space. Every\nEpisode and Relation lives in exactly one space, and a principal sees a\nrecord only through a space it may read. Read and write are the share\nrelations `reader`, `writer` and `owner` on the space, inherited through\n`parent`.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/spaces/{space}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.SpaceSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.SpaceStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`spc_<26 base32>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.SpaceGrant": {
        "description": "A SpaceGrant is one share tuple on a space: `space:<id>#<role>@<subject>`.",
        "properties": {
          "role": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.SpaceRole",
            "description": "The role granted."
          },
          "subject": {
            "description": "The share subject: `user:<id>`, `end_user:<id>`, `agent:<id>`, or a\nuserset such as `workspace:<id>#member`.",
            "type": "string"
          }
        },
        "required": [
          "role",
          "subject"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.SpaceKind": {
        "description": "SpaceKind is what a space holds.",
        "enum": [
          "workspace",
          "project",
          "team",
          "end_user",
          "agent",
          "shared"
        ],
        "type": "string"
      },
      "sylphx.knowledge.v1.SpaceRole": {
        "description": "SpaceRole is a share relation on a space.",
        "enum": [
          "reader",
          "writer",
          "owner"
        ],
        "type": "string"
      },
      "sylphx.knowledge.v1.SpaceSpec": {
        "description": "SpaceSpec is the caller-writable state of a Space.",
        "properties": {
          "grants": {
            "description": "Who may read and write the space, beyond `owner` and what `parent`\ngrants; at most 200. A repeated grant is stored once.",
            "items": {
              "$ref": "#/components/schemas/sylphx.knowledge.v1.SpaceGrant"
            },
            "type": "array"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.SpaceKind",
            "description": "What the space holds."
          },
          "owner": {
            "description": "The principal a private space belongs to, as a share subject:\n`end_user:<id>` for `SPACE_KIND_END_USER`, `agent:<id>` or\n`agent:<id>/end_user:<id>` for `SPACE_KIND_AGENT`. Empty for a shared\nspace. The owner is granted `owner` on the space.",
            "type": "string"
          },
          "parent": {
            "description": "The space this one inherits grants from, for example a project space\nunder its workspace space. A reader of the parent reads this space.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Space"
          },
          "schemas": {
            "description": "The Knowledge Schemas whose types the space accepts, as resource names;\nthe core schema is always accepted. At most 20.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/KnowledgeSchema"
          },
          "sensitive": {
            "description": "The space holds customer personal data. Its records are never sent in\nembeddings outside the cell's model routes, and enter a context pack or\nan answer that spans spaces only for a reader that holds `reader` on\nthis space directly. Only deterministic entity matches apply to it.",
            "type": "boolean"
          }
        },
        "required": [
          "kind"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.SpaceStatus": {
        "description": "SpaceStatus is the observed state of a Space.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "episode_count": {
            "description": "The number of episodes in the space.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "fact_count": {
            "description": "The number of current facts in the space.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "last_write_time": {
            "description": "When a record of the space was last written.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.SplitEntityRequest": {
        "description": "The request of SplitEntity.",
        "properties": {
          "entity": {
            "description": "The merged entity to restore.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          },
          "name": {
            "description": "The entity a merge folded the other into.",
            "type": "string",
            "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
          }
        },
        "required": [
          "name",
          "entity"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.SplitEntityResponse": {
        "description": "The response of SplitEntity.",
        "properties": {
          "restored": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity",
            "description": "The restored entity."
          },
          "survivor": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity",
            "description": "The entity that was merged into, after the split."
          }
        },
        "type": "object"
      },
      "sylphx.knowledge.v1.UpdateEntityRequest": {
        "description": "The request of UpdateEntity.",
        "properties": {
          "allow_missing": {
            "description": "Create the entity when no entity matches (`upsert_entity`): the name, or\nelse `external_ids`, identifies it.",
            "type": "boolean"
          },
          "entity": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity",
            "description": "The entity to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "entity"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.UpdateKnowledgeSchemaRequest": {
        "description": "The request of UpdateKnowledgeSchema.",
        "properties": {
          "allow_missing": {
            "description": "Create the knowledge schema when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "knowledge_schema": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.KnowledgeSchema",
            "description": "The knowledge schema to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "knowledge_schema"
        ],
        "type": "object"
      },
      "sylphx.knowledge.v1.UpdateSpaceRequest": {
        "description": "The request of UpdateSpace.",
        "properties": {
          "allow_missing": {
            "description": "Create the space when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "space": {
            "$ref": "#/components/schemas/sylphx.knowledge.v1.Space",
            "description": "The space to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "space"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.Catalog": {
        "description": "A Catalog is a string catalog: one source locale, its target locales, and\nhow to translate them. Its entries are written by `:sync`; `:export` returns\nthe files per locale.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/catalogs/{catalog}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.localization.v1.CatalogSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.localization.v1.CatalogStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`cat_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.CatalogEntry": {
        "description": "A Catalog Entry is one source message and its translations. `:sync` writes\nit; it is never created directly. Its id is a stable hash of the file and\nkey, assigned by the server.",
        "properties": {
          "context": {
            "description": "Disambiguates the same text with different meanings.",
            "readOnly": true,
            "type": "string"
          },
          "create_time": {
            "description": "When the entry was first synced.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "description": {
            "description": "A note for translators.",
            "readOnly": true,
            "type": "string"
          },
          "file": {
            "description": "The source file's path within the upload; empty for a single-file\ncatalog.",
            "readOnly": true,
            "type": "string"
          },
          "key": {
            "description": "The source text plus an optional `|context`, or an id for id-keyed\nformats.",
            "readOnly": true,
            "type": "string"
          },
          "max_length": {
            "description": "The longest a translation may be, in characters; 0 is no limit.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/catalogs/{catalog}/entries/{entry}`.",
            "type": "string"
          },
          "source_hash": {
            "description": "The first 16 lowercase hex characters of the SHA-256 of the UTF-8 source\npattern. A translation is stale when its source hash differs.",
            "readOnly": true,
            "type": "string"
          },
          "source_text": {
            "description": "The source message, a Unicode MessageFormat 2 pattern.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.localization.v1.EntryState",
            "description": "Whether the source still has this message.",
            "readOnly": true
          },
          "translations": {
            "description": "The translations, one per target locale at most.",
            "items": {
              "$ref": "#/components/schemas/sylphx.localization.v1.Translation"
            },
            "readOnly": true,
            "type": "array"
          },
          "uid": {
            "description": "`ent_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "update_time": {
            "description": "When the entry last changed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.CatalogFile": {
        "description": "A CatalogFile is one file of a catalog.",
        "properties": {
          "content": {
            "description": "The file's text, UTF-8; at most 4 MiB.",
            "type": "string"
          },
          "locale": {
            "description": "The file's locale, a BCP 47 tag.",
            "type": "string"
          },
          "path": {
            "description": "The file's path. The service does not interpret it and echoes it back, for\nexample a namespace file name.",
            "type": "string"
          }
        },
        "required": [
          "path",
          "locale",
          "content"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.CatalogSpec": {
        "description": "CatalogSpec is the caller-writable state of a Catalog.",
        "properties": {
          "glossaries": {
            "description": "The glossaries this catalog applies, as Glossary names; at most 10.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-resource-reference": "localization.sylphx.com/Glossary"
          },
          "locale_guidance": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Extra instructions per target locale, for example the vocabulary of a\nregion. Keys are target locales; at most 60 entries, each at most 2000\ncharacters.",
            "type": "object"
          },
          "pseudo_locales": {
            "description": "Pseudo-locales to generate at export. They are never stored or\ntranslated.",
            "items": {
              "$ref": "#/components/schemas/sylphx.localization.v1.PseudoLocale"
            },
            "type": "array"
          },
          "source_locale": {
            "description": "The locale the source texts are written in, a BCP 47 tag such as `en`.",
            "type": "string"
          },
          "target_locales": {
            "description": "The locales to translate into, BCP 47 tags. `zh-Hant-HK` and `zh-Hant-TW`\nare separate locales. At most 60, each once.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tone": {
            "description": "The brand voice every translation follows, at most 2000 characters.",
            "type": "string"
          }
        },
        "required": [
          "source_locale"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.CatalogStatus": {
        "description": "CatalogStatus is the observed state of a Catalog.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "entry_count": {
            "description": "The number of active entries.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "last_sync_time": {
            "description": "When `:sync` last completed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "locales": {
            "description": "Progress per target locale.",
            "items": {
              "$ref": "#/components/schemas/sylphx.localization.v1.LocaleProgress"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.CreateCatalogRequest": {
        "description": "The request of CreateCatalog.",
        "properties": {
          "catalog": {
            "$ref": "#/components/schemas/sylphx.localization.v1.Catalog",
            "description": "The catalog to create; only caller-writable fields are read."
          },
          "catalog_id": {
            "description": "The catalog id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/Catalog"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "catalog"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.CreateGlossaryRequest": {
        "description": "The request of CreateGlossary.",
        "properties": {
          "glossary": {
            "$ref": "#/components/schemas/sylphx.localization.v1.Glossary",
            "description": "The glossary to create; only caller-writable fields are read."
          },
          "glossary_id": {
            "description": "The glossary id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/Glossary"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "glossary"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.DeleteCatalogRequest": {
        "description": "The request of DeleteCatalog.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the catalog does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete the catalog's entries; without it, a catalog that has entries\nis refused with `INVALID_STATE`.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the catalog to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/Catalog"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.DeleteGlossaryRequest": {
        "description": "The request of DeleteGlossary.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the glossary does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the glossary to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/Glossary"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.EntryState": {
        "description": "EntryState is whether a Catalog Entry is still in the source.",
        "enum": [
          "active",
          "obsolete"
        ],
        "type": "string"
      },
      "sylphx.localization.v1.ExportCatalogRequest": {
        "description": "The request of ExportCatalog.",
        "properties": {
          "format": {
            "$ref": "#/components/schemas/sylphx.localization.v1.Format",
            "description": "The format of the files."
          },
          "locales": {
            "description": "The locales to export; default every target locale and the pseudo-locales.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The name of the catalog.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/Catalog"
          },
          "source_fallback": {
            "description": "Emit the source text for keys that have no passing translation, for\nruntimes that do not fall back to the source themselves.",
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "format"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.ExportCatalogResponse": {
        "description": "The response of ExportCatalog.",
        "properties": {
          "files": {
            "description": "One file per source file per locale, with the source file's `path`.",
            "items": {
              "$ref": "#/components/schemas/sylphx.localization.v1.CatalogFile"
            },
            "type": "array"
          },
          "glyph_sets": {
            "description": "The characters each locale's texts use.",
            "items": {
              "$ref": "#/components/schemas/sylphx.localization.v1.GlyphSet"
            },
            "type": "array"
          },
          "pending": {
            "description": "Translations still to make.",
            "format": "int32",
            "type": "integer"
          },
          "report": {
            "$ref": "#/components/schemas/sylphx.localization.v1.QaReport",
            "description": "The QA report. A translation with an error is never exported."
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.Format": {
        "description": "A file format the catalog is read from and written to. The canonical\ncatalog is `FORMAT_SYLPHX_JSON`; every other format is an adapter, never a\nsecond store.",
        "enum": [
          "sylphx_json",
          "icu_json",
          "gettext_po",
          "xliff2"
        ],
        "type": "string"
      },
      "sylphx.localization.v1.GetCatalogEntryRequest": {
        "description": "The request of GetCatalogEntry.",
        "properties": {
          "name": {
            "description": "The name of the catalog entry to get.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/CatalogEntry"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.GetCatalogRequest": {
        "description": "The request of GetCatalog.",
        "properties": {
          "name": {
            "description": "The name of the catalog to get.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/Catalog"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.GetGlossaryRequest": {
        "description": "The request of GetGlossary.",
        "properties": {
          "name": {
            "description": "The name of the glossary to get.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/Glossary"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.Glossary": {
        "description": "A Glossary is the terms shared by the catalogs that name it, one per brand\nor product family.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/glossaries/{glossary}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.localization.v1.GlossarySpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.localization.v1.GlossaryStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`gls_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.GlossarySpec": {
        "description": "GlossarySpec is the caller-writable state of a Glossary.",
        "properties": {
          "terms": {
            "description": "The terms; at most 5000.",
            "items": {
              "$ref": "#/components/schemas/sylphx.localization.v1.GlossaryTerm"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.GlossaryStatus": {
        "description": "GlossaryStatus is the observed state of a Glossary.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "term_count": {
            "description": "The number of terms.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.GlossaryTerm": {
        "description": "A GlossaryTerm is one term and the rule for it.",
        "properties": {
          "case_sensitive": {
            "description": "Match the term's letter case exactly.",
            "type": "boolean"
          },
          "description": {
            "description": "A note for translators, at most 500 characters.",
            "type": "string"
          },
          "locales": {
            "description": "The locales the term applies to; empty is every locale.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "replacement": {
            "description": "Suggested wording; used by `TERM_RULE_FORBIDDEN`.",
            "type": "string"
          },
          "rule": {
            "$ref": "#/components/schemas/sylphx.localization.v1.TermRule",
            "description": "What to do with the term."
          },
          "term": {
            "description": "The term, as written in the source.",
            "type": "string"
          },
          "translations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Locale to the required translation; used by `TERM_RULE_TRANSLATE`.",
            "type": "object"
          }
        },
        "required": [
          "term",
          "rule"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.GlyphSet": {
        "description": "A GlyphSet is the characters one locale uses, for font atlases.",
        "properties": {
          "characters": {
            "description": "Every distinct character the locale's texts use, sorted.",
            "type": "string"
          },
          "locale": {
            "description": "The locale.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.ListCatalogEntriesRequest": {
        "description": "The request of ListCatalogEntries.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, limited to `state`, `locale`, and `qa_state`; for example\n`state = ENTRY_STATE_ACTIVE AND locale = \"ja\" AND qa_state = QA_STATE_FAILED`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The catalog to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/CatalogEntry"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.ListCatalogEntriesResponse": {
        "description": "The response of ListCatalogEntries.",
        "properties": {
          "catalog_entries": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.localization.v1.CatalogEntry"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.ListCatalogsRequest": {
        "description": "The request of ListCatalogs.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/Catalog"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.ListCatalogsResponse": {
        "description": "The response of ListCatalogs.",
        "properties": {
          "catalogs": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.localization.v1.Catalog"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.ListGlossariesRequest": {
        "description": "The request of ListGlossaries.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/Glossary"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.ListGlossariesResponse": {
        "description": "The response of ListGlossaries.",
        "properties": {
          "glossaries": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.localization.v1.Glossary"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.LocaleProgress": {
        "description": "LocaleProgress counts the active entries of one target locale by state.",
        "properties": {
          "failed": {
            "description": "Entries whose translation still fails QA after repair.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "locale": {
            "description": "The target locale.",
            "readOnly": true,
            "type": "string"
          },
          "pending": {
            "description": "Entries still to translate.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "pinned": {
            "description": "Entries with a human-pinned translation.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "translated": {
            "description": "Entries with a translation that passed QA.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.PinTranslationRequest": {
        "description": "The request of PinTranslation.",
        "properties": {
          "locale": {
            "description": "The target locale.",
            "type": "string"
          },
          "name": {
            "description": "The name of the catalog entry.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/CatalogEntry"
          },
          "text": {
            "description": "The translated message, a Unicode MessageFormat 2 pattern.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "locale",
          "text"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.PseudoLocale": {
        "description": "A pseudo-locale is a synthetic locale generated at export to test layout.",
        "enum": [
          "accented",
          "bidi",
          "wide"
        ],
        "type": "string"
      },
      "sylphx.localization.v1.QaCheck": {
        "description": "QaCheck is a QA check.",
        "enum": [
          "syntax",
          "placeholders",
          "markup",
          "plural",
          "length",
          "glossary",
          "forbidden_term"
        ],
        "type": "string"
      },
      "sylphx.localization.v1.QaFinding": {
        "description": "A QaFinding is one problem QA found in a translation.",
        "properties": {
          "check": {
            "$ref": "#/components/schemas/sylphx.localization.v1.QaCheck",
            "description": "The check that found it.",
            "readOnly": true
          },
          "entry": {
            "description": "The Catalog Entry, as a resource name.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/CatalogEntry"
          },
          "key": {
            "description": "The entry's key.",
            "readOnly": true,
            "type": "string"
          },
          "locale": {
            "description": "The target locale.",
            "readOnly": true,
            "type": "string"
          },
          "message": {
            "description": "What is wrong.",
            "readOnly": true,
            "type": "string"
          },
          "severity": {
            "$ref": "#/components/schemas/sylphx.localization.v1.QaSeverity",
            "description": "How serious it is.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.QaReport": {
        "description": "A QaReport is the QA result of an export.",
        "properties": {
          "errors": {
            "description": "The number of errors.",
            "format": "int32",
            "type": "integer"
          },
          "findings": {
            "description": "The findings.",
            "items": {
              "$ref": "#/components/schemas/sylphx.localization.v1.QaFinding"
            },
            "type": "array"
          },
          "passed": {
            "description": "Whether there are no errors.",
            "type": "boolean"
          },
          "warnings": {
            "description": "The number of warnings.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.QaSeverity": {
        "description": "QaSeverity is how serious a QA finding is.",
        "enum": [
          "error",
          "warning"
        ],
        "type": "string"
      },
      "sylphx.localization.v1.QaState": {
        "description": "QaState is the QA result of a translation.",
        "enum": [
          "passed",
          "warning",
          "failed",
          "pending"
        ],
        "type": "string"
      },
      "sylphx.localization.v1.SyncCatalogRequest": {
        "description": "The request of SyncCatalog.",
        "properties": {
          "format": {
            "$ref": "#/components/schemas/sylphx.localization.v1.Format",
            "description": "The format of the files."
          },
          "name": {
            "description": "The name of the catalog.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/Catalog"
          },
          "sources": {
            "description": "The source-locale files; 1 to 500.",
            "items": {
              "$ref": "#/components/schemas/sylphx.localization.v1.CatalogFile"
            },
            "type": "array"
          },
          "translations": {
            "description": "The committed target-locale files; at most 10000. A text that differs from\nthe service's last export is recorded as a pinned human override.",
            "items": {
              "$ref": "#/components/schemas/sylphx.localization.v1.CatalogFile"
            },
            "type": "array"
          },
          "validate_only": {
            "description": "Validate the files and return the counts without writing or translating.",
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "format",
          "sources"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.SyncCatalogResponse": {
        "description": "The response of SyncCatalog.",
        "properties": {
          "added": {
            "description": "Entries new in the source.",
            "format": "int32",
            "type": "integer"
          },
          "adopted": {
            "description": "Existing translations taken from the committed files.",
            "format": "int32",
            "type": "integer"
          },
          "catalog": {
            "$ref": "#/components/schemas/sylphx.localization.v1.Catalog",
            "description": "The catalog after this call."
          },
          "changed": {
            "description": "Entries whose source changed.",
            "format": "int32",
            "type": "integer"
          },
          "failed": {
            "description": "Translations still failing QA after repair.",
            "format": "int32",
            "type": "integer"
          },
          "obsoleted": {
            "description": "Entries no longer in the source.",
            "format": "int32",
            "type": "integer"
          },
          "pending": {
            "description": "Translations still to make; call again until it is 0.",
            "format": "int32",
            "type": "integer"
          },
          "pinned": {
            "description": "Committed edits recorded as human overrides.",
            "format": "int32",
            "type": "integer"
          },
          "translated": {
            "description": "Translations made by this call.",
            "format": "int32",
            "type": "integer"
          },
          "usage": {
            "$ref": "#/components/schemas/sylphx.localization.v1.Usage",
            "description": "What this call used."
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.TermRule": {
        "description": "TermRule is what a glossary term requires.",
        "enum": [
          "translate",
          "keep",
          "forbidden"
        ],
        "type": "string"
      },
      "sylphx.localization.v1.Translation": {
        "description": "A Translation is the text of one entry in one target locale.",
        "properties": {
          "findings": {
            "description": "What QA found.",
            "items": {
              "$ref": "#/components/schemas/sylphx.localization.v1.QaFinding"
            },
            "readOnly": true,
            "type": "array"
          },
          "locale": {
            "description": "The target locale.",
            "readOnly": true,
            "type": "string"
          },
          "origin": {
            "$ref": "#/components/schemas/sylphx.localization.v1.TranslationOrigin",
            "description": "Where the text came from.",
            "readOnly": true
          },
          "pinned": {
            "description": "A human override that AI never overwrites.",
            "readOnly": true,
            "type": "boolean"
          },
          "qa_state": {
            "$ref": "#/components/schemas/sylphx.localization.v1.QaState",
            "description": "The result of QA on the text.",
            "readOnly": true
          },
          "stale": {
            "description": "The source changed since this text was made.",
            "readOnly": true,
            "type": "boolean"
          },
          "text": {
            "description": "The translated message, a Unicode MessageFormat 2 pattern.",
            "readOnly": true,
            "type": "string"
          },
          "update_time": {
            "description": "When the text last changed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.localization.v1.TranslationOrigin": {
        "description": "TranslationOrigin is where a translation's text came from.",
        "enum": [
          "ai",
          "memory",
          "human",
          "imported"
        ],
        "type": "string"
      },
      "sylphx.localization.v1.UnpinTranslationRequest": {
        "description": "The request of UnpinTranslation.",
        "properties": {
          "locale": {
            "description": "The target locale.",
            "type": "string"
          },
          "name": {
            "description": "The name of the catalog entry.",
            "type": "string",
            "x-sylphx-resource-reference": "localization.sylphx.com/CatalogEntry"
          }
        },
        "required": [
          "name",
          "locale"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.UpdateCatalogRequest": {
        "description": "The request of UpdateCatalog.",
        "properties": {
          "allow_missing": {
            "description": "Create the catalog when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "catalog": {
            "$ref": "#/components/schemas/sylphx.localization.v1.Catalog",
            "description": "The catalog to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "catalog"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.UpdateGlossaryRequest": {
        "description": "The request of UpdateGlossary.",
        "properties": {
          "allow_missing": {
            "description": "Create the glossary when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "glossary": {
            "$ref": "#/components/schemas/sylphx.localization.v1.Glossary",
            "description": "The glossary to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "glossary"
        ],
        "type": "object"
      },
      "sylphx.localization.v1.Usage": {
        "description": "Usage is what one call consumed.",
        "properties": {
          "memory_matches": {
            "description": "Translations reused from the translation memory, which are free.",
            "format": "int32",
            "type": "integer"
          },
          "translated_characters": {
            "description": "Source characters translated by this call, per target locale; the billed\nquantity.",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.AppStoreConnection": {
        "description": "AppStoreConnection is an App Store Server API key and the app's bundle ids.",
        "properties": {
          "account_token_prefix": {
            "description": "An earlier `appAccountToken` scheme the app's shipped builds use: the\ntoken is UUIDv5 in the URL namespace of this prefix followed by the\nsubject id (for example `https://accounts.example.com/v2/`). Tokens in\nMoney's own scheme are always accepted as well.",
            "type": "string"
          },
          "app_apple_id": {
            "description": "The app's Apple id: when set, production notifications must carry it.",
            "format": "int64",
            "type": "string"
          },
          "bundle_ids": {
            "description": "The apps' bundle ids.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "environment": {
            "description": "The store environment this connection serves: `production` or `sandbox`.\nOnly purchases signed for that environment are accepted (plus sandbox\nones on a production connection with `allow_sandbox`), and each is read\nback from its own environment's App Store Server API. Xcode and\nlocal-testing signatures are refused either way. A connection created\nbefore this field existed serves `production`.",
            "type": "string"
          },
          "issuer_id": {
            "description": "The App Store Connect issuer id.",
            "type": "string"
          },
          "key_id": {
            "description": "The In-App Purchase key id.",
            "type": "string"
          },
          "private_key": {
            "description": "The In-App Purchase key (`.p8` PEM). Write-only: sealed on write, never\nreturned; omit it on update to keep the stored key.",
            "type": "string",
            "writeOnly": true,
            "x-sylphx-sensitive": true
          }
        },
        "required": [
          "bundle_ids",
          "issuer_id",
          "key_id",
          "environment"
        ],
        "type": "object"
      },
      "sylphx.money.v1.BatchIngestUsageEventsRequest": {
        "description": "The request of BatchIngestUsageEvents.",
        "properties": {
          "parent": {
            "description": "The environment to record in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageEvent"
          },
          "usage_events": {
            "description": "1 to 500 events.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.IngestedUsageEvent"
            },
            "type": "array"
          }
        },
        "required": [
          "parent",
          "usage_events"
        ],
        "type": "object"
      },
      "sylphx.money.v1.BatchIngestUsageEventsResponse": {
        "description": "The response of BatchIngestUsageEvents.",
        "properties": {
          "results": {
            "description": "One per event, in request order.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.IngestedUsageEventResult"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.CancelCustomerSubscriptionRequest": {
        "description": "The request of CancelCustomerSubscription.",
        "properties": {
          "at_period_end": {
            "description": "End it at the period end (true) or now (false).",
            "type": "boolean"
          },
          "name": {
            "description": "The subscription to cancel.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/CustomerSubscription"
          },
          "refund_last_payment": {
            "description": "Refund the last payment in full; only with `at_period_end` false.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.Catalog": {
        "description": "A Catalog is an environment's features, products, and prices: the desired\nstate Money keeps its merchant account's processor objects equal to, by\nlookup key. It is declared in `sylphx.toml` `[money]` or written here.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/price_catalogs/default`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.money.v1.CatalogSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.money.v1.CatalogStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`cat_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CatalogSpec": {
        "description": "CatalogSpec is the caller-writable state of a Catalog.",
        "properties": {
          "client_grant_ttl": {
            "description": "How long a signed store-purchase grant is valid, from the moment it is\nissued; a client re-verifies to renew it. Default 7 days, 1 hour to 30\ndays.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "features": {
            "description": "What an entitlement can grant.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.Feature"
            },
            "type": "array"
          },
          "products": {
            "description": "What is sold.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.Product"
            },
            "type": "array"
          },
          "refund_claw_back": {
            "description": "Whether a delivered one-time purchase whose money the store or processor\ntakes back (a refund, a void, a chargeback) gives back its goods: its\nentitlements end, and the refund event asks the app to take back the\nassets it granted, up to what the subject still holds. Applies once the\nproject is enabled for take-backs, to refunds dated from then on; unset\nthen means on.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.CatalogStatus": {
        "description": "CatalogStatus is the observed state of a Catalog.",
        "properties": {
          "conditions": {
            "description": "Synced, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "processor_price_ids": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The processor object behind each price, by lookup key.",
            "readOnly": true,
            "type": "object"
          },
          "sync_time": {
            "description": "When the processor last matched the spec.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ChangeCustomerSubscriptionPlanRequest": {
        "description": "The request of ChangeCustomerSubscriptionPlan.",
        "properties": {
          "name": {
            "description": "The subscription to change.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/CustomerSubscription"
          },
          "price": {
            "description": "The key of the product's recurring price (for example monthly or yearly).\nOptional when the product has one recurring price.",
            "type": "string"
          },
          "product": {
            "description": "The key of the catalog product to move to.",
            "type": "string"
          },
          "proration_behavior": {
            "$ref": "#/components/schemas/sylphx.money.v1.ProrationBehavior",
            "description": "How the change is billed; unspecified is `create_prorations`."
          },
          "validate_only": {
            "description": "Run every check and answer the subscription as it would read, without\nchanging anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "product"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CheckEntitlementRequest": {
        "description": "The request of CheckEntitlement.",
        "properties": {
          "feature": {
            "description": "The feature key.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to check in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/EntitlementGrant"
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Who."
          }
        },
        "required": [
          "parent",
          "subject",
          "feature"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CheckEntitlementResponse": {
        "description": "The response of CheckEntitlement.",
        "properties": {
          "entitled": {
            "description": "Whether the subject holds the feature now.",
            "type": "boolean"
          },
          "entitlement_grant": {
            "description": "The grant that answers, when entitled.",
            "type": "string"
          },
          "expire_time": {
            "description": "When the answering grant ends; unset for no end. A caller may cache the\nanswer until then.",
            "format": "date-time",
            "type": "string"
          },
          "limit": {
            "description": "For a `limit` feature, the largest allowance the subject holds.",
            "type": "string"
          },
          "source": {
            "description": "The answering grant's source, for example `<checkout session>/line_items/<n>`:\nthe `grant` claim of an offline licence token.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.CheckUsageStandingRequest": {
        "description": "The request of CheckUsageStanding.",
        "properties": {
          "actor_proof": {
            "description": "For a customer organization: the acting user's token.",
            "type": "string"
          },
          "parent": {
            "description": "The environment.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageEvent"
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Whose standing."
          },
          "subject_proof": {
            "description": "As on UsageReservation: a verified token for the subject.",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "subject",
          "subject_proof"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CheckoutPolicy": {
        "description": "A Checkout Policy is an environment's seller setting for which buyers\nconsumer checkout refuses, by buyer country (docs/services/money/web-payments.md,\n\"Denying consumer checkout by country\"). One per environment, id `default`;\nan environment without one refuses nobody.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/checkout_policies/default`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.money.v1.CheckoutPolicySpec",
            "description": "Desired state."
          },
          "uid": {
            "description": "`cpl_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CheckoutPolicySpec": {
        "description": "CheckoutPolicySpec is the caller-writable state of a CheckoutPolicy.",
        "properties": {
          "allow_tax_id_buyers": {
            "description": "Whether a buyer from a denied country who gives a tax id (a business)\nmay still buy. Checkout then asks for the tax id; default false.",
            "type": "boolean"
          },
          "denied_country_codes": {
            "description": "Buyer countries consumer checkout refuses: ISO 3166-1 alpha-2 codes\n(`DE`), or the group `EU` (the 27 member states). At most 300 entries.\nEmpty refuses nobody.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.CheckoutSession": {
        "description": "A Checkout Session is a hosted page where a subject pays for catalog\nprices. Money creates the processor's session on the environment's\nmerchant account and returns its URL.",
        "properties": {
          "allow_promotion_codes": {
            "description": "Whether the buyer may enter a promotion code.",
            "type": "boolean",
            "x-sylphx-immutable": true
          },
          "billing_country_code": {
            "description": "The billing country the completed checkout was checked against, upper-case\nISO 3166-1 alpha-2; empty until completion.",
            "readOnly": true,
            "type": "string"
          },
          "billing_subdivision_code": {
            "description": "The billing state or province, upper-case, kept only for the countries\nwhose tax thresholds are per subdivision (`US`, `CA`); empty otherwise.\nNothing else of the buyer's address is stored.",
            "readOnly": true,
            "type": "string"
          },
          "buyer_country_code": {
            "description": "Where the buyer is, upper-case ISO 3166-1 alpha-2, when the caller knows\nit (for example from the request's IP address). A country the\nenvironment's checkout policy denies is refused here, before any page is\nmade, unless the policy lets a business buy. Not trusted for anything\nelse: the billing address the buyer gives is checked again when the\npayment completes.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "cancel_url": {
            "description": "Where the buyer lands on cancel. HTTPS only.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "currency_code": {
            "description": "The currency to charge in, upper-case ISO 4217; default the processor's\nchoice for the buyer among the prices' currencies.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "denied_reason": {
            "description": "Why a completed checkout was refused and refunded instead of delivered:\n`country_denied` (the billing country is on the checkout policy's list) or\n`country_unknown` (no billing country to check). Empty otherwise.",
            "readOnly": true,
            "type": "string"
          },
          "expire_time": {
            "description": "When the page stops accepting payment.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "line_items": {
            "description": "What is bought: catalog prices by lookup key. One recurring price makes a\nsubscription; one-time prices make an order.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.LineItem"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "locale": {
            "description": "The page language, for example `en` or `zh-HK`; default automatic.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Copied to the subscription or order, for example attribution\n(`utm_source`, `ref`). At most 20 keys.",
            "type": "object",
            "x-sylphx-immutable": true
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/checkout_sessions/{checkout_session}`.",
            "type": "string"
          },
          "processor_session_id": {
            "description": "The processor's session id.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "description": "`open`, `complete`, or `expired`.",
            "readOnly": true,
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Who pays and is entitled.",
            "x-sylphx-immutable": true
          },
          "success_url": {
            "description": "Where the buyer lands after paying; `{CHECKOUT_SESSION_ID}` is replaced\nby the processor's session id. HTTPS only.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "uid": {
            "description": "`chk_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "url": {
            "description": "The hosted page.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "subject",
          "line_items",
          "success_url"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ClientVerifyStorePurchaseRequest": {
        "description": "The request of ClientVerifyStorePurchase.",
        "properties": {
          "account_token": {
            "description": "The account token the app set at purchase (Play `obfuscatedAccountId`,\nApp Store `appAccountToken`). A consistency check only: it must match\nthe subject's derivation and the store's copy.",
            "type": "string"
          },
          "package_name": {
            "description": "Google Play: the package name, when the connection covers several.",
            "type": "string"
          },
          "parent": {
            "description": "The environment the purchase is verified in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/StorePurchase"
          },
          "product_id": {
            "description": "Google Play: the store product id (for a subscription, its id).",
            "type": "string"
          },
          "purchase_token": {
            "description": "Google Play: the purchase token.",
            "type": "string"
          },
          "signed_transaction": {
            "description": "App Store: the StoreKit 2 signed transaction (`jwsRepresentation`).",
            "type": "string"
          },
          "store": {
            "description": "`app_store` or `google_play`.",
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Who bought it: `end_user` of `inst_` and a lower-case UUID."
          }
        },
        "required": [
          "parent",
          "subject",
          "store"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ConnectMerchantAccountRequest": {
        "description": "The request of ConnectMerchantAccount.",
        "properties": {
          "merchant_account_id": {
            "description": "The merchant account id; default `default`.",
            "type": "string"
          },
          "parent": {
            "description": "The environment whose seller this becomes.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/MerchantAccount"
          },
          "restricted_key": {
            "description": "A Stripe restricted key (`rk_test_…` or `rk_live_…`); when set, no OAuth\nhappens: the account is read and connected at once. Write-only: sealed on\nwrite, never returned, never logged. A secret key (`sk_…`) is refused,\nbecause a restricted key can be limited to what payments need.",
            "type": "string",
            "writeOnly": true,
            "x-sylphx-sensitive": true
          },
          "return_url": {
            "description": "Where the browser returns after the processor, with `status` and, on\nsuccess, `merchant_account` in the query. HTTPS only. Required for the\nOAuth connection; unused, and so optional, with `restricted_key`.",
            "type": "string"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ConnectMerchantAccountResponse": {
        "description": "The response of ConnectMerchantAccount.",
        "properties": {
          "authorize_url": {
            "description": "The processor's authorisation page for an owner of the account to open;\nempty when the connection completed in this call.",
            "type": "string"
          },
          "expire_time": {
            "description": "When the link stops working; unset when the connection completed in this\ncall.",
            "format": "date-time",
            "type": "string"
          },
          "merchant_account": {
            "$ref": "#/components/schemas/sylphx.money.v1.MerchantAccount",
            "description": "The merchant account, connected; set when the connection completed in\nthis call, which is every connection made with a restricted key."
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.CreateCheckoutSessionRequest": {
        "description": "The request of CreateCheckoutSession.",
        "properties": {
          "checkout_session": {
            "$ref": "#/components/schemas/sylphx.money.v1.CheckoutSession",
            "description": "The checkout to create; only caller-writable fields are read."
          },
          "checkout_session_id": {
            "description": "The id, the final name segment; the server assigns one when empty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/CheckoutSession"
          }
        },
        "required": [
          "parent",
          "checkout_session"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CreateCreditGrantRequest": {
        "description": "The request of CreateCreditGrant.",
        "properties": {
          "credit_grant": {
            "$ref": "#/components/schemas/sylphx.money.v1.CreditGrant",
            "description": "The credit grant."
          },
          "parent": {
            "description": "The environment to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/CreditGrant"
          }
        },
        "required": [
          "parent",
          "credit_grant"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CreateEntitlementGrantRequest": {
        "description": "The request of CreateEntitlementGrant.",
        "properties": {
          "entitlement_grant": {
            "$ref": "#/components/schemas/sylphx.money.v1.EntitlementGrant",
            "description": "The grant: `subject`, `feature`, `expire_time` (future, at most 400 days\nout), `campaign`, `reason` and `approval_ref` are required."
          },
          "entitlement_grant_id": {
            "description": "The grant's id, also its idempotency: `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`.\nThe same id with the same grant returns the stored one; the same id with\nanother grant is RESOURCE_ALREADY_EXISTS.",
            "type": "string"
          },
          "parent": {
            "description": "The environment the grant is in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/EntitlementGrant"
          }
        },
        "required": [
          "parent",
          "entitlement_grant_id",
          "entitlement_grant"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CreatePortalSessionRequest": {
        "description": "The request of CreatePortalSession.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/PortalSession"
          },
          "portal_session": {
            "$ref": "#/components/schemas/sylphx.money.v1.PortalSession",
            "description": "The portal session to create; only caller-writable fields are read."
          },
          "portal_session_id": {
            "description": "The id, the final name segment; the server assigns one when empty.",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "portal_session"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CreateRevenueSourceRequest": {
        "description": "The request of CreateRevenueSource.",
        "properties": {
          "parent": {
            "description": "The org to create in: `orgs/{org}`.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/RevenueSource"
          },
          "revenue_source": {
            "$ref": "#/components/schemas/sylphx.money.v1.RevenueSource",
            "description": "The source to create."
          },
          "revenue_source_id": {
            "description": "The source's id; `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`. Empty: Money\nassigns one.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate only; write nothing.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "revenue_source"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CreateStoreConnectionRequest": {
        "description": "The request of CreateStoreConnection.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/StoreConnection"
          },
          "store_connection": {
            "$ref": "#/components/schemas/sylphx.money.v1.StoreConnection",
            "description": "The store connection to create; only caller-writable fields are read."
          },
          "store_connection_id": {
            "description": "The store connection id, the final name segment.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "store_connection_id",
          "store_connection"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CreateUsageEventRequest": {
        "description": "The request of CreateUsageEvent.",
        "properties": {
          "parent": {
            "description": "The environment to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageEvent"
          },
          "usage_event": {
            "$ref": "#/components/schemas/sylphx.money.v1.UsageEvent",
            "description": "The usage event."
          }
        },
        "required": [
          "parent",
          "usage_event"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CreateUsageMeterPriceRequest": {
        "description": "The request of CreateUsageMeterPrice.",
        "properties": {
          "parent": {
            "description": "The environment to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageMeterPrice"
          },
          "usage_meter_price": {
            "$ref": "#/components/schemas/sylphx.money.v1.UsageMeterPrice",
            "description": "The price."
          }
        },
        "required": [
          "parent",
          "usage_meter_price"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CreateUsageReservationRequest": {
        "description": "The request of CreateUsageReservation.",
        "properties": {
          "parent": {
            "description": "The environment to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageReservation"
          },
          "usage_reservation": {
            "$ref": "#/components/schemas/sylphx.money.v1.UsageReservation",
            "description": "The reservation."
          }
        },
        "required": [
          "parent",
          "usage_reservation"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CreditGrant": {
        "description": "A Credit Grant is credit a merchant gives a subject: audited, append-only,\ninvoiced at full price and then offset once at invoice issue, soonest\nexpiry first. A change is a new grant that supersedes the old one.",
        "properties": {
          "amount_minor": {
            "description": "Minor units, a decimal string.",
            "type": "string"
          },
          "approver": {
            "description": "Who approved it.",
            "type": "string"
          },
          "collection_mode": {
            "description": "`standard` or `hold`; no default. Over the credit, a held invoice stays\ndue but is not collected until an explicit audited release.",
            "type": "string"
          },
          "expire_time": {
            "description": "When it stops applying; required. Not renewing is how charging starts.",
            "format": "date-time",
            "type": "string"
          },
          "kind": {
            "description": "`amount` (a total) or `monthly_cap` (up to the amount in each month).",
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/credit_grants/{credit_grant}`.",
            "type": "string"
          },
          "reason": {
            "description": "Why.",
            "type": "string"
          },
          "start_time": {
            "description": "When it starts applying.",
            "format": "date-time",
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Who receives it."
          },
          "supersedes": {
            "description": "The grant this one replaces.",
            "type": "string"
          },
          "tax_treatment": {
            "description": "`undecided`, `price_reduction`, or `post_tax_settlement`; no default.\n`post_tax_settlement` is refused while the merchant has automatic tax on.",
            "type": "string"
          },
          "uid": {
            "description": "`cgrt_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "subject",
          "kind",
          "amount_minor",
          "start_time",
          "expire_time",
          "approver",
          "reason",
          "tax_treatment",
          "collection_mode"
        ],
        "type": "object"
      },
      "sylphx.money.v1.CustomerSubscription": {
        "description": "A Customer Subscription is a subject's recurring purchase, mirrored from\nthe processor after Money read it back. Money writes it; a caller changes it\nonly through `:cancel` and `:resume`.",
        "properties": {
          "cancel_at_period_end": {
            "description": "Whether it ends at `current_period_end_time` instead of renewing.",
            "readOnly": true,
            "type": "boolean"
          },
          "current_period_end_time": {
            "description": "The end of the paid period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "items": {
            "description": "The prices, by lookup key, and their quantities.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.LineItem"
            },
            "readOnly": true,
            "type": "array"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "metadata": {
            "additionalProperties": true,
            "description": "The checkout's metadata.",
            "readOnly": true,
            "type": "object"
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/customer_subscriptions/{customer_subscription}`.",
            "type": "string"
          },
          "processor_subscription_id": {
            "description": "The processor's subscription id.",
            "readOnly": true,
            "type": "string"
          },
          "source": {
            "description": "`stripe`, `app_store`, or `google_play`.",
            "readOnly": true,
            "type": "string"
          },
          "status": {
            "description": "`trialing`, `active`, `past_due`, `paused`, `canceled`, `unpaid`,\n`incomplete`, or `incomplete_expired`, as the processor reports it.",
            "readOnly": true,
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Who holds it.",
            "readOnly": true
          },
          "trial_end_time": {
            "description": "The end of the trial, when there is one.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`csb_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.DeleteRevenueSourceRequest": {
        "description": "The request of DeleteRevenueSource.",
        "properties": {
          "etag": {
            "description": "The current etag; when set, the delete happens only if it matches.",
            "type": "string"
          },
          "name": {
            "description": "The source to delete, with the facts it reported. The `money` source\ncannot be deleted (pause it instead).",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/RevenueSource"
          },
          "validate_only": {
            "description": "Validate only; delete nothing.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.DeleteStoreConnectionRequest": {
        "description": "The request of DeleteStoreConnection.",
        "properties": {
          "etag": {
            "description": "The ETag the caller read; the delete fails if it changed.",
            "type": "string"
          },
          "name": {
            "description": "The name of the store connection to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/StoreConnection"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.DisconnectMerchantAccountRequest": {
        "description": "The request of DisconnectMerchantAccount.",
        "properties": {
          "name": {
            "description": "The merchant account to disconnect.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/MerchantAccount"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.EntitlementGrant": {
        "description": "An Entitlement Grant is one feature a subject holds, from one source: a\nsubscription, an order, a store purchase, or a manual grant. Money derives\nit; a client event never writes one.",
        "properties": {
          "approval_ref": {
            "description": "A free-text reference to the approval, for example `CEO 2026-10-02`\n(input on create, up to 200 characters).",
            "type": "string"
          },
          "approver": {
            "description": "The principal that created a manual grant: the verified key's principal,\nnever a request field.",
            "readOnly": true,
            "type": "string"
          },
          "campaign": {
            "description": "A manual grant's campaign (input on create, up to 64 characters).",
            "type": "string"
          },
          "expire_time": {
            "description": "When it ends; unset for no end.",
            "format": "date-time",
            "type": "string"
          },
          "feature": {
            "description": "The feature key.",
            "type": "string"
          },
          "limit": {
            "description": "For a `limit` feature, the allowance as a decimal string.",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/entitlement_grants/{entitlement_grant}`.",
            "type": "string"
          },
          "reason": {
            "description": "A manual grant's reason (input on create, up to 500 characters).",
            "type": "string"
          },
          "source": {
            "description": "The resource that grants it, for example a customer subscription's name.",
            "readOnly": true,
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Who holds it."
          },
          "uid": {
            "description": "`egr_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ExchangeRate": {
        "description": "An Exchange Rate is the units of one currency per US dollar on one day,\nfrom the ECB reference rates (ADR §3). A day the ECB did not publish\ncarries the previous business day's rate, named in `published_on`. The\ntable is the same for every org: any reader that converts uses it.",
        "properties": {
          "currency_code": {
            "description": "ISO 4217 code.",
            "readOnly": true,
            "type": "string"
          },
          "day": {
            "description": "The day, `YYYY-MM-DD`.",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/exchange_rates/{currency}-{YYYY-MM-DD}`, lower case.",
            "type": "string"
          },
          "per_usd": {
            "description": "Units of the currency per US dollar, as a decimal string.",
            "readOnly": true,
            "type": "string"
          },
          "publication_day": {
            "description": "The publication the rate is from: the day itself, or the business day\nbefore a weekend or holiday.",
            "readOnly": true,
            "type": "string"
          },
          "source": {
            "description": "`ecb`.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "The rate's id, as in its name.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.Feature": {
        "description": "A Feature is what an app checks, for example `plus` or\n`exports.per_month`.",
        "properties": {
          "display_name": {
            "description": "Shown to people.",
            "type": "string"
          },
          "key": {
            "description": "The key the app checks; `^[a-z][a-z0-9_.]{0,63}$`.",
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.money.v1.FeatureKind",
            "description": "`boolean` (on or off) or `limit` (a numeric allowance)."
          }
        },
        "required": [
          "key"
        ],
        "type": "object"
      },
      "sylphx.money.v1.FeatureKind": {
        "description": "FeatureKind is how a feature is granted.",
        "enum": [
          "boolean",
          "limit"
        ],
        "type": "string"
      },
      "sylphx.money.v1.GenerateLicenceKeyRequest": {
        "description": "The request of GenerateLicenceKey.",
        "properties": {
          "licence_key_id": {
            "description": "The key's id; `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`. Empty: Money assigns\none.",
            "type": "string"
          },
          "parent": {
            "description": "The environment the key belongs to.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/LicenceKey"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.money.v1.LicenceKeySpec",
            "description": "Shown to operators."
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetCatalogRequest": {
        "description": "The request of GetCatalog.",
        "properties": {
          "name": {
            "description": "The name of the catalog to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/PriceCatalog"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetCheckoutPolicyRequest": {
        "description": "The request of GetCheckoutPolicy.",
        "properties": {
          "name": {
            "description": "The name of the checkout policy to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/CheckoutPolicy"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetCheckoutSessionRequest": {
        "description": "The request of GetCheckoutSession.",
        "properties": {
          "name": {
            "description": "The name of the checkout session to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/CheckoutSession"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetCreditGrantRequest": {
        "description": "The request of GetCreditGrant.",
        "properties": {
          "name": {
            "description": "The name of the credit grant to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/CreditGrant"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetCustomerSubscriptionRequest": {
        "description": "The request of GetCustomerSubscription.",
        "properties": {
          "name": {
            "description": "The name of the customer subscription to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/CustomerSubscription"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetEntitlementGrantRequest": {
        "description": "The request of GetEntitlementGrant.",
        "properties": {
          "name": {
            "description": "The name of the entitlement grant to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/EntitlementGrant"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetLicenceKeyRequest": {
        "description": "The request of GetLicenceKey.",
        "properties": {
          "name": {
            "description": "The name of the licence key to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/LicenceKey"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetMerchantAccountRequest": {
        "description": "The request of GetMerchantAccount.",
        "properties": {
          "name": {
            "description": "The name of the merchant account to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/MerchantAccount"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetPortalSessionRequest": {
        "description": "The request of GetPortalSession.",
        "properties": {
          "name": {
            "description": "The name of the portal session to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/PortalSession"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetRevenueSourceRequest": {
        "description": "The request of GetRevenueSource.",
        "properties": {
          "name": {
            "description": "The name of the source to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/RevenueSource"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetRevenueSummaryRequest": {
        "description": "The request of GetRevenueSummary.",
        "properties": {
          "amount": {
            "description": "`net` (the default) or `gross`.",
            "type": "string"
          },
          "currency_code": {
            "description": "The reporting currency, ISO 4217; default `USD`.",
            "type": "string"
          },
          "end_day": {
            "description": "The last day of a `range`, inclusive; at most 400 days after the first.",
            "type": "string"
          },
          "group_by": {
            "description": "`day` (the default) or `month`.",
            "type": "string"
          },
          "month": {
            "description": "The month of a `month` period, `YYYY-MM`.",
            "type": "string"
          },
          "name": {
            "description": "`orgs/{org}/revenue`.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/RevenueSummary"
          },
          "period": {
            "description": "`today`, `mtd` (month to date, the default), `month` (with `month`), or\n`range` (with `start_day` and `end_day`). Days are UTC.",
            "type": "string"
          },
          "split": {
            "description": "`none` (the default), `source` or `product`.",
            "type": "string"
          },
          "start_day": {
            "description": "The first day of a `range`, `YYYY-MM-DD`.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetStoreConnectionRequest": {
        "description": "The request of GetStoreConnection.",
        "properties": {
          "name": {
            "description": "The name of the store connection to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/StoreConnection"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetStorePurchaseRequest": {
        "description": "The request of GetStorePurchase.",
        "properties": {
          "name": {
            "description": "The name of the store purchase to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/StorePurchase"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetUsageInvoiceRequest": {
        "description": "The request of GetUsageInvoice.",
        "properties": {
          "name": {
            "description": "The name of the usage invoice to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageInvoice"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetUsageMeterRequest": {
        "description": "The request of GetUsageMeter.",
        "properties": {
          "name": {
            "description": "The name of the usage meter to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageMeter"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetUsageReservationRequest": {
        "description": "The request of GetUsageReservation.",
        "properties": {
          "name": {
            "description": "The name of the usage reservation to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageReservation"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GetUsageSettingsRequest": {
        "description": "The request of GetUsageSettings.",
        "properties": {
          "name": {
            "description": "The name of the usage settings to get.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageSettings"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.GooglePlayConnection": {
        "description": "GooglePlayConnection is a Play service account and the app's package names.",
        "properties": {
          "notification_audience": {
            "description": "The audience Play's Pub/Sub push token must carry for real-time developer\nnotifications; unset refuses them.",
            "type": "string"
          },
          "notification_service_account": {
            "description": "The service account Pub/Sub pushes as.",
            "type": "string"
          },
          "package_names": {
            "description": "The apps' package names.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "service_account_json": {
            "description": "The service account's JSON key. Write-only: sealed on write, never\nreturned; omit it on update to keep the stored key.",
            "type": "string",
            "writeOnly": true,
            "x-sylphx-sensitive": true
          }
        },
        "required": [
          "package_names"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ImportLicenceKeyRequest": {
        "description": "The request of ImportLicenceKey.",
        "properties": {
          "expected_public_key": {
            "description": "The public key shipped clients pin, raw base64url without padding. The\nimport is refused unless it is the public half of the imported key.",
            "type": "string"
          },
          "licence_key_id": {
            "description": "The key's id; as on GenerateLicenceKeyRequest. Required.",
            "type": "string"
          },
          "parent": {
            "description": "The environment the key belongs to.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/LicenceKey"
          },
          "private_key_pkcs8": {
            "contentEncoding": "base64",
            "description": "The Ed25519 private key as PKCS8 DER in standard base64. Write-only:\nsealed on import, never returned.",
            "type": "string",
            "writeOnly": true,
            "x-sylphx-sensitive": true
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.money.v1.LicenceKeySpec",
            "description": "Shown to operators."
          }
        },
        "required": [
          "parent",
          "licence_key_id",
          "private_key_pkcs8",
          "expected_public_key"
        ],
        "type": "object"
      },
      "sylphx.money.v1.IngestedUsageEvent": {
        "description": "One already-incurred usage event of a batch.",
        "properties": {
          "event_id": {
            "description": "The emitter's id of this event, 1 to 128 characters of `[A-Za-z0-9._:-]`;\nwith the meter and its version, the dedupe key.",
            "type": "string"
          },
          "meter": {
            "description": "The meter.",
            "type": "string"
          },
          "meter_version": {
            "description": "The emitter's version of the meter's definition, 1 or more.",
            "format": "int32",
            "type": "integer"
          },
          "occurred_time": {
            "description": "When it happened.",
            "format": "date-time",
            "type": "string"
          },
          "quantity": {
            "description": "How much, 1 to 2^40.",
            "format": "int64",
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Who used it, as attributed by the emitter."
          }
        },
        "required": [
          "event_id",
          "meter",
          "meter_version",
          "subject",
          "quantity",
          "occurred_time"
        ],
        "type": "object"
      },
      "sylphx.money.v1.IngestedUsageEventResult": {
        "description": "What became of one ingested event.",
        "properties": {
          "event_id": {
            "description": "The event's `event_id`.",
            "type": "string"
          },
          "outcome": {
            "description": "`accepted` (recorded now), `duplicate` (already recorded with the same\ncontent: a no-op), `conflict` (its key was recorded with other content;\nthis one is never counted) or `rejected` (refused; see `reason`).",
            "type": "string"
          },
          "reason": {
            "description": "For `rejected`: `invalid` (a field is out of range), `unpriced` (no\nactive meter with a price in force at `occurred_time`) or\n`reservation_required` (the meter records only through a reservation);\nempty otherwise.",
            "type": "string"
          },
          "usage_event": {
            "description": "The UsageEvent that counts this usage, for `accepted` and `duplicate`.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageEvent"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.LicenceKey": {
        "description": "A Licence Key is one Ed25519 signing key Money holds for an environment. The\nprivate half is generated here (or imported once, for a key already pinned in\nshipped clients), sealed with Money's seal keys, and never returned or\nlogged. The public half is exported keyless at\n`GET /v1/money/licence_keys/{uid}`, in the raw base64url form a client pins.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/licence_keys/{licence_key}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.money.v1.LicenceKeySpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.money.v1.LicenceKeyStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`lkey_<cell><ulid>`; never reused. The keyless public export is addressed\nby it.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.money.v1.LicenceKeySpec": {
        "description": "LicenceKeySpec is the caller-writable state of a LicenceKey.",
        "properties": {
          "description": {
            "description": "Shown to operators.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.LicenceKeyStatus": {
        "description": "LicenceKeyStatus is the observed state of a LicenceKey.",
        "properties": {
          "conditions": {
            "description": "Ready while the key exists.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "origin": {
            "description": "`generated` or `imported`.",
            "readOnly": true,
            "type": "string"
          },
          "public_key": {
            "description": "The raw Ed25519 public key, base64url without padding.",
            "readOnly": true,
            "type": "string"
          },
          "retire_time": {
            "description": "When the key was retired.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "description": "`active` signs new terms; `retired` signs only terms already frozen to it\nand stays exported for verification.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.LicencePolicy": {
        "description": "A LicencePolicy is the product-owned rule for the offline licence a paid\none-time purchase of the product carries. Written by the merchant with the\ncatalog (`billing:write`); it names no key material, only the LicenceKey that\nsigns. A licence is refused on a consumable product and on a product with a\nrecurring price. There is no grace period.",
        "properties": {
          "key": {
            "description": "The id of the LicenceKey that signs new terms.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/LicenceKey"
          },
          "plan": {
            "description": "The `plan` the token carries.",
            "type": "string"
          },
          "scheme": {
            "description": "The token scheme; `sylphx-offline-ed25519-v1`.",
            "type": "string"
          },
          "term": {
            "$ref": "#/components/schemas/sylphx.money.v1.LicenceTerm",
            "description": "How long one purchase lasts."
          },
          "token_product": {
            "description": "The `product` the token carries (what the client checks it against).",
            "type": "string"
          }
        },
        "required": [
          "scheme",
          "plan",
          "token_product",
          "key",
          "term"
        ],
        "type": "object"
      },
      "sylphx.money.v1.LicenceTerm": {
        "description": "A LicenceTerm is a length of time with explicit arithmetic: `days` add\nexact 86 400 000 ms multiples to the UTC instant; `calendar_months` and\n`calendar_years` add months to the UTC calendar date, keep the time of day,\nand clamp a day that does not exist in the target month to the month's last\nday (2028-02-29 plus one year is 2029-02-28).",
        "properties": {
          "count": {
            "description": "How many units; at least 1.",
            "format": "int32",
            "type": "integer"
          },
          "unit": {
            "$ref": "#/components/schemas/sylphx.money.v1.LicenceTermUnit",
            "description": "The unit of `count`."
          }
        },
        "required": [
          "unit",
          "count"
        ],
        "type": "object"
      },
      "sylphx.money.v1.LicenceTermUnit": {
        "description": "LicenceTermUnit is the unit of a licence term.",
        "enum": [
          "calendar_years",
          "calendar_months",
          "days"
        ],
        "type": "string"
      },
      "sylphx.money.v1.LicenceToken": {
        "description": "A Licence Token is one issued offline licence, re-derived from its frozen\nterm: the same bytes every time. Money derives it; nothing writes one.",
        "properties": {
          "expire_time": {
            "description": "When the token expires.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "issue_time": {
            "description": "When the term was frozen.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "line": {
            "description": "The checkout line the token is for.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/licence_tokens/{licence_token}`.",
            "type": "string"
          },
          "seats": {
            "description": "The seats the token carries.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "source": {
            "description": "The grant source the term was frozen for:\n`<checkout session name>/line_items/<n>`.",
            "readOnly": true,
            "type": "string"
          },
          "token": {
            "description": "The token: `base64url(payload) \".\" base64url(signature)`.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "token_product": {
            "description": "The `product` the token carries.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`ltok_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.LineItem": {
        "description": "A Line Item is one catalog price and its quantity.",
        "properties": {
          "price": {
            "description": "The price's lookup key.",
            "type": "string"
          },
          "quantity": {
            "description": "How many; default 1. Seats for a per-seat or family price.",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "price"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListCreditGrantsRequest": {
        "description": "The request of ListCreditGrants.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, for example `subject = \"…\"`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/CreditGrant"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListCreditGrantsResponse": {
        "description": "The response of ListCreditGrants.",
        "properties": {
          "credit_grants": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.CreditGrant"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListCustomerSubscriptionsRequest": {
        "description": "The request of ListCustomerSubscriptions.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/CustomerSubscription"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListCustomerSubscriptionsResponse": {
        "description": "The response of ListCustomerSubscriptions.",
        "properties": {
          "customer_subscriptions": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.CustomerSubscription"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListEntitlementGrantsRequest": {
        "description": "The request of ListEntitlementGrants.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over filterable fields, for example `feature = \"plus\"`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/EntitlementGrant"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListEntitlementGrantsResponse": {
        "description": "The response of ListEntitlementGrants.",
        "properties": {
          "entitlement_grants": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.EntitlementGrant"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListExchangeRatesRequest": {
        "description": "The request of ListExchangeRates.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, comparisons joined with `AND`: `currency_code = \"EUR\"`,\n`day >= \"YYYY-MM-DD\"`, `day <= \"YYYY-MM-DD\"`. The days\ndefault to the 31 days to today (UTC), and span at most 400 days.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The org reading: `orgs/{org}`. The rates are the same for every org.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/ExchangeRate"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListExchangeRatesResponse": {
        "description": "The response of ListExchangeRates.",
        "properties": {
          "exchange_rates": {
            "description": "The page, newest day first, then by currency.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.ExchangeRate"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListLicenceKeysRequest": {
        "description": "The request of ListLicenceKeys.",
        "properties": {
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/LicenceKey"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListLicenceKeysResponse": {
        "description": "The response of ListLicenceKeys.",
        "properties": {
          "licence_keys": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.LicenceKey"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListLicenceTokensRequest": {
        "description": "The request of ListLicenceTokens.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter. It must name whose tokens (else `INVALID_FIELD`): `end_user = \"…\"` or\n`customer_organization = \"…\"`; `token_product = \"…\"` (joined with `AND`)\nkeeps only that product, and no `token_product` lists every product.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/LicenceToken"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListLicenceTokensResponse": {
        "description": "The response of ListLicenceTokens.",
        "properties": {
          "licence_tokens": {
            "description": "Every unexpired token of a paid order, newest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.LicenceToken"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListMerchantAccountsRequest": {
        "description": "The request of ListMerchantAccounts.",
        "properties": {
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/MerchantAccount"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListMerchantAccountsResponse": {
        "description": "The response of ListMerchantAccounts.",
        "properties": {
          "merchant_accounts": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.MerchantAccount"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListRevenueFactsRequest": {
        "description": "The request of ListRevenueFacts.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, comparisons joined with `AND`: `source = \"…\"` (a source\nid or name), `basis`, `store_kind`, `product_ref` (each `=`), and\n`day >= \"YYYY-MM-DD\"`, `day <= \"YYYY-MM-DD\"`. The days default to the 31\ndays to today (UTC), and span at most 400 days.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The org: `orgs/{org}`.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/RevenueFact"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListRevenueFactsResponse": {
        "description": "The response of ListRevenueFacts.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "revenue_facts": {
            "description": "The page, newest day first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.RevenueFact"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListRevenueSourcesRequest": {
        "description": "The request of ListRevenueSources.",
        "properties": {
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The org to list in: `orgs/{org}`.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/RevenueSource"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListRevenueSourcesResponse": {
        "description": "The response of ListRevenueSources.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "revenue_sources": {
            "description": "The page, by id, each with its freshness.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.RevenueSource"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListStoreConnectionsRequest": {
        "description": "The request of ListStoreConnections.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/StoreConnection"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListStoreConnectionsResponse": {
        "description": "The response of ListStoreConnections.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "store_connections": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.StoreConnection"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListStorePurchasesRequest": {
        "description": "The request of ListStorePurchases.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over filterable fields, for example `transaction_id = \"…\"`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/StorePurchase"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListStorePurchasesResponse": {
        "description": "The response of ListStorePurchases.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "store_purchases": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.StorePurchase"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListTaxThresholdStatusesRequest": {
        "description": "The request of ListTaxThresholdStatuses.",
        "properties": {
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/TaxThresholdStatus"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListTaxThresholdStatusesResponse": {
        "description": "The response of ListTaxThresholdStatuses.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "tax_threshold_statuses": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.TaxThresholdStatus"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListUsageEventsRequest": {
        "description": "The request of ListUsageEvents.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, for example `subject = \"…\"`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageEvent"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListUsageEventsResponse": {
        "description": "The response of ListUsageEvents.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "usage_events": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.UsageEvent"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListUsageInvoicesRequest": {
        "description": "The request of ListUsageInvoices.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, for example `subject = \"…\"`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageInvoice"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListUsageInvoicesResponse": {
        "description": "The response of ListUsageInvoices.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "usage_invoices": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.UsageInvoice"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListUsageMeterPricesRequest": {
        "description": "The request of ListUsageMeterPrices.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, for example `meter = \"tokens\"`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageMeterPrice"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListUsageMeterPricesResponse": {
        "description": "The response of ListUsageMeterPrices.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "usage_meter_prices": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.UsageMeterPrice"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListUsageMetersRequest": {
        "description": "The request of ListUsageMeters.",
        "properties": {
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageMeter"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListUsageMetersResponse": {
        "description": "The response of ListUsageMeters.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "usage_meters": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.UsageMeter"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.ListUsageTiersRequest": {
        "description": "The request of ListUsageTiers.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter, for example `subject = \"…\"`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageTier"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ListUsageTiersResponse": {
        "description": "The response of ListUsageTiers.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "usage_tiers": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.UsageTier"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.MerchantAccount": {
        "description": "A Merchant Account is the seller an environment charges as on the web: the\ncustomer's own Stripe account, connected through Stripe Connect OAuth, or\nwith a restricted key when OAuth cannot be used (the platform's own\nproducts). Sylphx stores the account id, and for a key connection the key\nsealed, never in the clear and never returned. `:connect` starts the\nconnection; the processor's redirect completes an OAuth one.",
        "properties": {
          "account_id": {
            "description": "The connected account id, for example `acct_1Nv…`.",
            "readOnly": true,
            "type": "string"
          },
          "automatic_tax": {
            "description": "Whether Stripe computes tax on this merchant's checkouts and usage\ninvoices (its own cost decision: Stripe Tax charges per transaction).\nOff by default. Writable through `UpdateMerchantAccount`\n(`update_mask = \"automatic_tax\"`). Turning it on is refused while a live\n`post_tax_settlement` credit grant exists.",
            "type": "boolean"
          },
          "business_name": {
            "description": "The business name the processor holds for the account.",
            "readOnly": true,
            "type": "string"
          },
          "charges_enabled": {
            "description": "Whether the account can take payments now.",
            "readOnly": true,
            "type": "boolean"
          },
          "credential": {
            "description": "How the account is called at the processor: `connect` (the platform's\nkey acts for a connected account) or `restricted_key` (the account's own\nkey, held sealed).",
            "readOnly": true,
            "type": "string"
          },
          "default_currency_code": {
            "description": "ISO 4217 default currency of the account, upper case.",
            "readOnly": true,
            "type": "string"
          },
          "livemode": {
            "description": "Whether the connection is in live mode (false is test mode).",
            "readOnly": true,
            "type": "boolean"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/merchant_accounts/{merchant_account}`;\nthe environment's seller is `default`.",
            "type": "string"
          },
          "payouts_enabled": {
            "description": "Whether the account can be paid out.",
            "readOnly": true,
            "type": "boolean"
          },
          "processor": {
            "description": "The processor: `stripe`.",
            "readOnly": true,
            "type": "string"
          },
          "refresh_time": {
            "description": "When the processor last confirmed these fields.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "region_code": {
            "description": "ISO 3166-1 alpha-2 country of the account.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "description": "`connected` or `disconnected`.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`mac_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.PortalSession": {
        "description": "A Portal Session is a hosted page where a subject manages its\nsubscriptions, payment method, and invoices.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/portal_sessions/{portal_session}`.",
            "type": "string"
          },
          "return_url": {
            "description": "Where the portal's back link goes. HTTPS only.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Whose portal.",
            "x-sylphx-immutable": true
          },
          "uid": {
            "description": "`pts_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "url": {
            "description": "The hosted page; valid for a few minutes.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "subject",
          "return_url"
        ],
        "type": "object"
      },
      "sylphx.money.v1.Price": {
        "description": "A Price is one way to pay for a product, named by its lookup key.",
        "properties": {
          "archived": {
            "description": "Whether checkout may sell this price.",
            "type": "boolean"
          },
          "default_currency": {
            "description": "The processor's base currency: an upper-case ISO 4217 code that is a key of\n`unit_amounts`. Unset uses the first currency in code order. Changing it\ncreates a new processor price under the same lookup key, because the base\ncurrency is immutable there.",
            "type": "string"
          },
          "key": {
            "description": "The lookup key the app uses; `^[a-z][a-z0-9_]{0,63}$`, unique in the\ncatalog.",
            "type": "string"
          },
          "recurring_interval": {
            "description": "Unset for a one-time price; `day`, `week`, `month`, or `year`.",
            "type": "string"
          },
          "recurring_interval_count": {
            "description": "Intervals per period; default 1.",
            "format": "int32",
            "type": "integer"
          },
          "tax_behavior": {
            "description": "`inclusive` (the amount includes tax) or `exclusive`.",
            "type": "string"
          },
          "trial_days": {
            "description": "Free trial days for a recurring price.",
            "format": "int32",
            "type": "integer"
          },
          "unit_amounts": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Unit amount per ISO 4217 currency code in upper case, as a decimal string\nof minor units, for example `{\"USD\": \"499\", \"GBP\": \"399\"}`. The processor's\nbase currency is `default_currency` when set, else the first currency in\ncode order.",
            "type": "object"
          }
        },
        "required": [
          "key",
          "unit_amounts"
        ],
        "type": "object"
      },
      "sylphx.money.v1.Product": {
        "description": "A Product is one thing sold, with its prices and the features it grants.",
        "properties": {
          "consumable": {
            "description": "Whether one purchase is used up (a pack of game currency) rather than\nkept (an unlock or a subscription).",
            "type": "boolean"
          },
          "description": {
            "description": "Shown on checkout.",
            "type": "string"
          },
          "display_name": {
            "description": "Shown on checkout and invoices.",
            "type": "string"
          },
          "features": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Feature grants: a feature key and, for a `limit` feature, the allowance as\na decimal string; `true` for a boolean feature.",
            "type": "object"
          },
          "grants": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "What one unit grants in the app's own assets, by asset code, as decimal\nstrings, for example `{\"GEMS\": \"650\"}`. Carried in the signed grant so the\napp's server credits exactly this.",
            "type": "object"
          },
          "key": {
            "description": "The product key; `^[a-z][a-z0-9_]{0,63}$`.",
            "type": "string"
          },
          "licence": {
            "$ref": "#/components/schemas/sylphx.money.v1.LicencePolicy",
            "description": "The offline licence a paid one-time purchase carries; refused on a\nconsumable product and on a product with a recurring price."
          },
          "prices": {
            "description": "The product's prices.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.Price"
            },
            "type": "array"
          },
          "store_product_ids": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Store product ids that sell this product, by store (`app_store`,\n`google_play`).",
            "type": "object"
          }
        },
        "required": [
          "key",
          "display_name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ProrationBehavior": {
        "description": "ProrationBehavior is how a subscription change is billed for the rest of\nthe current period.",
        "enum": [
          "create_prorations",
          "none",
          "always_invoice"
        ],
        "type": "string"
      },
      "sylphx.money.v1.RefreshMerchantAccountRequest": {
        "description": "The request of RefreshMerchantAccount.",
        "properties": {
          "name": {
            "description": "The merchant account to read back.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/MerchantAccount"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ReleaseUsageInvoiceCollectionRequest": {
        "description": "The request of ReleaseUsageInvoiceCollection.",
        "properties": {
          "name": {
            "description": "The held invoice to release for collection.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageInvoice"
          },
          "reason": {
            "description": "Who releases it, and why: both are kept.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "reason"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ReleaseUsageReservationRequest": {
        "description": "The request of ReleaseUsageReservation.",
        "properties": {
          "name": {
            "description": "The reservation to release.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageReservation"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.ResumeCustomerSubscriptionRequest": {
        "description": "The request of ResumeCustomerSubscription.",
        "properties": {
          "name": {
            "description": "The subscription to resume.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/CustomerSubscription"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.RetireLicenceKeyRequest": {
        "description": "The request of RetireLicenceKey.",
        "properties": {
          "name": {
            "description": "The key to retire.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/LicenceKey"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.RevenueBucket": {
        "description": "One day or month of a RevenueSummary.",
        "properties": {
          "basis": {
            "description": "The weakest basis that counted in the bucket: `final` when every row is\na source's final statement, `estimated` or `booked` otherwise.",
            "type": "string"
          },
          "incomplete": {
            "description": "A stale source has not reported this bucket yet.",
            "type": "boolean"
          },
          "lines": {
            "description": "The bucket per source or product; empty when `split` is `none`.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.RevenueLine"
            },
            "type": "array"
          },
          "start_day": {
            "description": "The day, or the first day of the month.",
            "type": "string"
          },
          "total": {
            "description": "The bucket's total in minor units of the reporting currency.",
            "type": "string"
          },
          "unconverted_count": {
            "description": "Daily rows of this bucket with no rate yet.",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.RevenueFact": {
        "description": "A Revenue Fact is one line a source reported, in that line's own currency\n(ADR §1): read for audit and export. Facts are written by Money's own\nbookings and by imports, never through this API.",
        "properties": {
          "account_ref": {
            "description": "The account the source reports for.",
            "readOnly": true,
            "type": "string"
          },
          "basis": {
            "description": "`booked`, `estimated` or `final`.",
            "readOnly": true,
            "type": "string"
          },
          "currency_code": {
            "description": "ISO 4217 code of the amounts.",
            "readOnly": true,
            "type": "string"
          },
          "day": {
            "description": "The source's reporting day; the first of the month for a month row.",
            "readOnly": true,
            "type": "string"
          },
          "external_key": {
            "description": "The source's own identity for the line.",
            "readOnly": true,
            "type": "string"
          },
          "fee": {
            "description": "The store's or processor's fee.",
            "readOnly": true,
            "type": "string"
          },
          "granularity": {
            "description": "`transaction`, `day` or `month`.",
            "readOnly": true,
            "type": "string"
          },
          "gross": {
            "description": "What the buyer paid.",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/revenue_facts/{revenue_fact}`.",
            "type": "string"
          },
          "net": {
            "description": "What the org earns.",
            "readOnly": true,
            "type": "string"
          },
          "product_ref": {
            "description": "The product reference the source uses.",
            "readOnly": true,
            "type": "string"
          },
          "region_code": {
            "description": "Buyer country (ISO 3166-1 alpha-2), where the source reports it.",
            "readOnly": true,
            "type": "string"
          },
          "settled_on": {
            "description": "The day the money reached the bank; empty until the source says so.",
            "readOnly": true,
            "type": "string"
          },
          "sku": {
            "description": "The store's item id.",
            "readOnly": true,
            "type": "string"
          },
          "source": {
            "description": "The source that reported it: `orgs/{org}/revenue_sources/{id}`.",
            "readOnly": true,
            "type": "string"
          },
          "store_kind": {
            "description": "`stripe`, `app_store`, `google_play`, `ad_network` or `other`.",
            "readOnly": true,
            "type": "string"
          },
          "tax": {
            "description": "Tax.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "The fact's id: a hash of its source and external key.",
            "readOnly": true,
            "type": "string"
          },
          "units": {
            "description": "Items or orders, where reported.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.RevenueLine": {
        "description": "One source's or product's share of a total.",
        "properties": {
          "key": {
            "description": "The source's name (`orgs/{org}/revenue_sources/{id}`), or the product as\n`{store_kind}/{product_ref}`.",
            "type": "string"
          },
          "label": {
            "description": "The source's display name, or the product's label; the reference itself\nwhen the product has no label.",
            "type": "string"
          },
          "total": {
            "description": "In minor units of the reporting currency.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.RevenueSource": {
        "description": "A Revenue Source is one place an org's revenue is read from. `kind`\nselects the connector Money implements once (ADR §2). The `money` source\nis implicit, one per environment with Money, made the first time Money\nbooks a sale there; it cannot be created or deleted through the API, only\nrenamed or paused. A connector's credential is sealed and never returned;\nconnectors arrive kind by kind, and a source of a kind whose connector has\nnot shipped yet is registered and reported stale until it first syncs.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/revenue_sources/{revenue_source}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.money.v1.RevenueSourceSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.money.v1.RevenueSourceStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "The source's id (`rvs-…`); never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.money.v1.RevenueSourceSpec": {
        "description": "RevenueSourceSpec is the caller-writable state of a RevenueSource.",
        "properties": {
          "config": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The connector's settings (an account id, a bucket, a column mapping),\nnever a credential. At most 32 entries.",
            "type": "object"
          },
          "display_name": {
            "description": "Shown on summaries and in the console.",
            "type": "string"
          },
          "kind": {
            "description": "`money`, `stripe`, `google_play`, `app_store`, `ad_network`, `file` or\n`manual`. Set on create and never changed; `money` is never created.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "paused": {
            "description": "A paused source is not synced and cannot be run; its facts still count.",
            "type": "boolean"
          }
        },
        "required": [
          "kind"
        ],
        "type": "object"
      },
      "sylphx.money.v1.RevenueSourceStatus": {
        "description": "RevenueSourceStatus is the observed state of a RevenueSource.",
        "properties": {
          "conditions": {
            "description": "`Ready` while the source is fresh; `False` with reason `Stale`,\n`Paused` or `NeverSynced` otherwise.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "environment": {
            "description": "For a `money` source, the environment it books:\n`orgs/{org}/projects/{project}/envs/{env}`. Empty for every other kind.",
            "readOnly": true,
            "type": "string"
          },
          "last_run_error": {
            "description": "The last failed run's error code; never a response body.",
            "readOnly": true,
            "type": "string"
          },
          "last_run_state": {
            "description": "The last run: `running`, `succeeded` or `failed`; empty before the first.",
            "readOnly": true,
            "type": "string"
          },
          "last_success_time": {
            "description": "When the source last synced successfully. Unset for a `money` source,\nwhich books in real time.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "newest_day": {
            "description": "The newest day the source holds, `YYYY-MM-DD`; empty when it holds none.",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "stale": {
            "description": "The newest day is older than the kind's normal lag plus one day, or the\nsource has never synced: summaries name it and mark the days it has not\nreported as incomplete.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.RevenueSummary": {
        "description": "The Revenue Summary is an org's revenue over a period, read from the daily\nroll-up and never from raw facts (ADR §4), converted into one reporting\ncurrency at each day's rate (§3), with the highest basis counting for each\nstore, product and day (§1 \"Which row counts\"). Computed on every read;\nnothing writes it.",
        "properties": {
          "amount": {
            "description": "`net` or `gross`.",
            "readOnly": true,
            "type": "string"
          },
          "buckets": {
            "description": "One bucket per day or month that holds revenue, oldest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.RevenueBucket"
            },
            "readOnly": true,
            "type": "array"
          },
          "currency_code": {
            "description": "The reporting currency every converted amount is in.",
            "readOnly": true,
            "type": "string"
          },
          "end_day": {
            "description": "The last day of the period, inclusive.",
            "readOnly": true,
            "type": "string"
          },
          "group_by": {
            "description": "`day` or `month`.",
            "readOnly": true,
            "type": "string"
          },
          "incomplete": {
            "description": "A stale source has not reported some day of the period.",
            "readOnly": true,
            "type": "boolean"
          },
          "lines": {
            "description": "The period's total per source or product, largest first; empty when\n`split` is `none`.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.RevenueLine"
            },
            "readOnly": true,
            "type": "array"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata.",
            "readOnly": true
          },
          "name": {
            "description": "`orgs/{org}/revenue`.",
            "type": "string"
          },
          "split": {
            "description": "`none`, `source` or `product`.",
            "readOnly": true,
            "type": "string"
          },
          "stale_sources": {
            "description": "Sources that report late: their missing days make the period incomplete.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.StaleRevenueSource"
            },
            "readOnly": true,
            "type": "array"
          },
          "start_day": {
            "description": "The first day of the period, `YYYY-MM-DD`.",
            "readOnly": true,
            "type": "string"
          },
          "total": {
            "description": "The period's total, in minor units of the reporting currency.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "The org's id.",
            "readOnly": true,
            "type": "string"
          },
          "unconverted": {
            "description": "Amounts with no exchange rate for their day yet, in their own currency:\ncounted here, never in `total`.",
            "items": {
              "$ref": "#/components/schemas/sylphx.money.v1.UnconvertedAmount"
            },
            "readOnly": true,
            "type": "array"
          },
          "unconverted_count": {
            "description": "Daily rows that had no rate and are in `unconverted`.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.RunRevenueSourceRequest": {
        "description": "The request of RunRevenueSource.",
        "properties": {
          "end_day": {
            "description": "The last day of a backfill, `YYYY-MM-DD`, inclusive.",
            "type": "string"
          },
          "mode": {
            "description": "`sync` (default) reads what is new; `backfill` re-reads the period\n`start_day` to `end_day`.",
            "type": "string"
          },
          "name": {
            "description": "The source to run.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/RevenueSource"
          },
          "start_day": {
            "description": "The first day of a backfill, `YYYY-MM-DD`.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.RunRevenueSourceResponse": {
        "description": "The response of RunRevenueSource.",
        "properties": {
          "facts": {
            "description": "The facts the run wrote.",
            "format": "int64",
            "type": "string"
          },
          "revenue_source": {
            "$ref": "#/components/schemas/sylphx.money.v1.RevenueSource",
            "description": "The source after the run."
          },
          "run": {
            "description": "The run's id.",
            "type": "string"
          },
          "state": {
            "description": "`succeeded`, `failed`, or `running` while a connector works through it.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.SettleUsageReservationRequest": {
        "description": "The request of SettleUsageReservation.",
        "properties": {
          "name": {
            "description": "The reservation to settle.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/UsageReservation"
          },
          "occurred_time": {
            "description": "When the work happened; now when absent.",
            "format": "date-time",
            "type": "string"
          },
          "quantity_used": {
            "description": "What was used, in the meter's base unit; 0 to the granted quantity, or\nmore after expiry (the work happened).",
            "format": "int64",
            "type": "string"
          }
        },
        "required": [
          "name",
          "quantity_used"
        ],
        "type": "object"
      },
      "sylphx.money.v1.StaleRevenueSource": {
        "description": "A source named on a summary because it reports late.",
        "properties": {
          "display_name": {
            "description": "The source's display name.",
            "type": "string"
          },
          "newest_day": {
            "description": "The newest day it holds; empty when it holds none.",
            "type": "string"
          },
          "source": {
            "description": "`orgs/{org}/revenue_sources/{id}`.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.StoreConnection": {
        "description": "A Store Connection is the environment's access to one app store: its App\nStore Server API key or Google Play service account, sealed by Money and\nnever returned, and the apps (bundle ids or package names) it covers.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/store_connections/{store_connection}`;\nby convention `app-store` or `google-play`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.money.v1.StoreConnectionSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.money.v1.StoreConnectionStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`stc_<cell><ulid>`; never reused. Store notifications for this\nconnection are sent to a URL that carries it.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.money.v1.StoreConnectionSpec": {
        "description": "StoreConnectionSpec is the caller-writable state of a StoreConnection.",
        "properties": {
          "allow_sandbox": {
            "description": "Accept purchases the store marks as sandbox or license-test. Off: a\nsandbox purchase is refused. On a `production` App Store connection it\nalso takes App Review and TestFlight purchases, read back from the\nsandbox and recorded and granted as `sandbox`, never as production.",
            "type": "boolean"
          },
          "app_store": {
            "$ref": "#/components/schemas/sylphx.money.v1.AppStoreConnection",
            "description": "The App Store."
          },
          "client_verify": {
            "description": "Let an app with no server verify its own purchases against this\nconnection (`store_purchases:clientVerify`, callable with a publishable\nkey). Off by default, including for every connection created before this\nfield existed; only a secret key holding `billing:write` can turn it on.",
            "type": "boolean"
          },
          "google_play": {
            "$ref": "#/components/schemas/sylphx.money.v1.GooglePlayConnection",
            "description": "Google Play."
          },
          "require_account_token": {
            "description": "Refuse a purchase that does not carry the subject's account token (App\nStore `appAccountToken`, Play `obfuscatedAccountId`).",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.StoreConnectionStatus": {
        "description": "StoreConnectionStatus is the observed state of a StoreConnection.",
        "properties": {
          "conditions": {
            "description": "Ready when a credential is stored.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "credential_set": {
            "description": "Whether a credential is stored.",
            "readOnly": true,
            "type": "boolean"
          },
          "notification_url": {
            "description": "Where the store sends its notifications for this connection.",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "service_account_email": {
            "description": "The service account's email, read from the stored key (Play only).",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.StorePurchase": {
        "description": "A Store Purchase is one store transaction Money verified with the store and\nbound to one subject. Re-verifying it returns the same record and grant.",
        "properties": {
          "bundle_or_package": {
            "description": "The bundle id or package name.",
            "readOnly": true,
            "type": "string"
          },
          "claw_back": {
            "description": "Revoked after it was delivered, and its goods come back: its\nentitlements ended, and the app takes back the assets its grant credited,\nup to what the subject still holds. False while it stands, and for a\nrefund the catalog's `refund_claw_back` lets the subject keep.",
            "readOnly": true,
            "type": "boolean"
          },
          "currency_code": {
            "description": "ISO 4217 currency of `price`.",
            "readOnly": true,
            "type": "string"
          },
          "customer_subscription": {
            "description": "The subscription it belongs to, for a subscription purchase.",
            "readOnly": true,
            "type": "string"
          },
          "environment": {
            "description": "`production` or `sandbox`.",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/store_purchases/{store_purchase}`.",
            "type": "string"
          },
          "original_purchase_time": {
            "description": "When the store says the first purchase of this subscription or restored\npurchase was made; unset when it did not report one.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "original_transaction_id": {
            "description": "The first transaction of a subscription or restored purchase.",
            "readOnly": true,
            "type": "string"
          },
          "price": {
            "description": "The price the store charged, in minor units of `currency`, when the store\nreports it.",
            "readOnly": true,
            "type": "string"
          },
          "product": {
            "description": "The catalog product it sells, when the catalog maps the store product.",
            "readOnly": true,
            "type": "string"
          },
          "product_id": {
            "description": "The store product id.",
            "readOnly": true,
            "type": "string"
          },
          "purchase_time": {
            "description": "When the store says it was bought.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "quantity": {
            "description": "Units bought.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "region_code": {
            "description": "ISO 3166-1 alpha-2 country of the buyer's storefront, upper case; empty\nwhen the store did not report one.",
            "readOnly": true,
            "type": "string"
          },
          "revoke_time": {
            "description": "When the store refunded or revoked it.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "description": "`purchased`, `pending`, or `revoked`.",
            "readOnly": true,
            "type": "string"
          },
          "store": {
            "description": "`app_store` or `google_play`.",
            "readOnly": true,
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Who it belongs to.",
            "readOnly": true
          },
          "transaction_id": {
            "description": "The store's transaction id (App Store transaction id, Play order id).",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`spu_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.Subject": {
        "description": "A Subject is who pays and holds entitlements: exactly one of an end user\nor a customer organization of the app.",
        "properties": {
          "customer_organization": {
            "description": "A customer organization's id.",
            "type": "string"
          },
          "end_user": {
            "description": "An end user's id (Sylphx Auth, or the app's own OIDC issuer).",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.SyncCatalogRequest": {
        "description": "The request of SyncCatalog.",
        "properties": {
          "name": {
            "description": "The catalog to push.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/PriceCatalog"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.money.v1.TaxThresholdStatus": {
        "description": "A Tax Threshold Status is where the environment's consumer (B2C) paid\nsales stand against one jurisdiction's registration threshold for digital\nservices (docs/services/money/web-payments.md, \"Tax registration\nthresholds\"). It is computed on read from the sales Money recorded and the\nthreshold table; nothing about it is written by a caller.",
        "properties": {
          "alerted_percent": {
            "description": "The highest alert level (70, 90, 100) already sent for this window; 0 if\nnone.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "currency_code": {
            "description": "The threshold's currency, upper-case ISO 4217.",
            "readOnly": true,
            "type": "string"
          },
          "effective_time": {
            "description": "When the threshold row took effect.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata; not set for a computed view."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/tax_threshold_statuses/{threshold}`,\nthe threshold's id (`au-gst`, `us-tx`).",
            "type": "string"
          },
          "percent": {
            "description": "How close the sales are to the threshold, in whole percent (the higher of\nthe amount and the count); it can exceed 100.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "region_code": {
            "description": "The jurisdiction's country, upper-case ISO 3166-1 alpha-2.",
            "readOnly": true,
            "type": "string"
          },
          "sales_amount": {
            "description": "The consumer paid sales in the window, net of tax, in `currency_code`\nminor units. Business sales (a tax id was given) are excluded.",
            "readOnly": true,
            "type": "string"
          },
          "sales_transaction_count": {
            "description": "The number of those sales.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "source_url": {
            "description": "The authority page the threshold comes from.",
            "readOnly": true,
            "type": "string"
          },
          "subdivision_code": {
            "description": "The jurisdiction's subdivision (a US state, `TX`); empty for a country.",
            "readOnly": true,
            "type": "string"
          },
          "tax_name": {
            "description": "The tax the threshold registers for, for example `GST`.",
            "readOnly": true,
            "type": "string"
          },
          "threshold_amount": {
            "description": "The amount that triggers registration, integer minor units of\n`currency_code`; \"0\" when the threshold is a transaction count only.",
            "readOnly": true,
            "type": "string"
          },
          "threshold_transaction_count": {
            "description": "The transaction count that triggers registration; 0 when none.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "The threshold's id, as in `name`.",
            "readOnly": true,
            "type": "string"
          },
          "unconverted_currency_codes": {
            "description": "Currencies of sales that could not be converted into `currency_code`\n(no rate in the rate table) and so are not counted in `sales_amount`.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "window_end_time": {
            "description": "The end of the window (the moment of the read for a rolling window).",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "window_kind": {
            "description": "`rolling_12_months`, `calendar_year`, or `prior_or_current_calendar_year`.",
            "readOnly": true,
            "type": "string"
          },
          "window_start_time": {
            "description": "The start (inclusive) of the window the figures below cover.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.UnconvertedAmount": {
        "description": "An amount a summary could not convert yet.",
        "properties": {
          "amount": {
            "description": "In minor units of that currency.",
            "type": "string"
          },
          "currency_code": {
            "description": "ISO 4217 code.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.UpdateCatalogRequest": {
        "description": "The request of UpdateCatalog.",
        "properties": {
          "allow_missing": {
            "description": "Create the catalog when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "catalog": {
            "$ref": "#/components/schemas/sylphx.money.v1.Catalog",
            "description": "The catalog to write; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "catalog"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UpdateCheckoutPolicyRequest": {
        "description": "The request of UpdateCheckoutPolicy.",
        "properties": {
          "allow_missing": {
            "description": "Create the policy when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "checkout_policy": {
            "$ref": "#/components/schemas/sylphx.money.v1.CheckoutPolicy",
            "description": "The checkout policy to write; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "checkout_policy"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UpdateCustomerSubscriptionQuantityRequest": {
        "description": "The request of UpdateCustomerSubscriptionQuantity.",
        "properties": {
          "name": {
            "description": "The subscription to change.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/CustomerSubscription"
          },
          "proration_behavior": {
            "$ref": "#/components/schemas/sylphx.money.v1.ProrationBehavior",
            "description": "How the change is billed; unspecified is `create_prorations`."
          },
          "quantity": {
            "description": "The new quantity (seats) of the subscription's one item; at least 1.\nTo end the subscription, cancel it.",
            "format": "int64",
            "type": "string"
          }
        },
        "required": [
          "name",
          "quantity"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UpdateMerchantAccountRequest": {
        "description": "The request of UpdateMerchantAccount.",
        "properties": {
          "merchant_account": {
            "$ref": "#/components/schemas/sylphx.money.v1.MerchantAccount",
            "description": "The merchant account with its new values; `name` selects it."
          },
          "update_mask": {
            "description": "The fields to change.",
            "type": "string"
          }
        },
        "required": [
          "merchant_account"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UpdateRevenueSourceRequest": {
        "description": "The request of UpdateRevenueSource.",
        "properties": {
          "revenue_source": {
            "$ref": "#/components/schemas/sylphx.money.v1.RevenueSource",
            "description": "The source with its new values; `name` addresses it."
          },
          "update_mask": {
            "description": "The fields to change: `spec.display_name`, `spec.paused`,\n`spec.config`. Empty changes every one the body sets.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate only; write nothing.",
            "type": "boolean"
          }
        },
        "required": [
          "revenue_source"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UpdateStoreConnectionRequest": {
        "description": "The request of UpdateStoreConnection.",
        "properties": {
          "allow_missing": {
            "description": "Create the store connection when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "store_connection": {
            "$ref": "#/components/schemas/sylphx.money.v1.StoreConnection",
            "description": "The store connection to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "store_connection"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UpdateUsageMeterRequest": {
        "description": "The request of UpdateUsageMeter.",
        "properties": {
          "update_mask": {
            "description": "The fields to change.",
            "type": "string"
          },
          "usage_meter": {
            "$ref": "#/components/schemas/sylphx.money.v1.UsageMeter",
            "description": "The usage meter with its new values; `name` selects it."
          }
        },
        "required": [
          "usage_meter"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UpdateUsageSettingsRequest": {
        "description": "The request of UpdateUsageSettings.",
        "properties": {
          "update_mask": {
            "description": "The fields to change.",
            "type": "string"
          },
          "usage_settings": {
            "$ref": "#/components/schemas/sylphx.money.v1.UsageSettings",
            "description": "The usage settings with its new values; `name` selects it."
          }
        },
        "required": [
          "usage_settings"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UpdateUsageTierRequest": {
        "description": "The request of UpdateUsageTier.",
        "properties": {
          "update_mask": {
            "description": "The fields to change.",
            "type": "string"
          },
          "usage_tier": {
            "$ref": "#/components/schemas/sylphx.money.v1.UsageTier",
            "description": "The usage tier with its new values; `name` selects it."
          }
        },
        "required": [
          "usage_tier"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UsageEvent": {
        "description": "A Usage Event is rated usage, immutable: what a settled reservation or a\ndirect record produced.",
        "properties": {
          "actor_proof": {
            "description": "As on UsageReservation.",
            "type": "string",
            "writeOnly": true
          },
          "amount_nano": {
            "description": "The rated amount, nano-minor, a decimal string.",
            "readOnly": true,
            "type": "string"
          },
          "late": {
            "description": "Settled after the reservation expired; the usage is still recorded.",
            "readOnly": true,
            "type": "boolean"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "meter": {
            "description": "The meter's lookup key.",
            "type": "string"
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/usage_events/{usage_event}`.",
            "type": "string"
          },
          "occurred_time": {
            "description": "When the work happened.",
            "format": "date-time",
            "type": "string"
          },
          "quantity": {
            "description": "How much, in the meter's base unit.",
            "format": "int64",
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Who used it."
          },
          "subject_proof": {
            "description": "As on UsageReservation.",
            "type": "string",
            "writeOnly": true
          },
          "uid": {
            "description": "`uevt_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "usage_reservation": {
            "description": "The reservation it settled, when it did.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "subject",
          "subject_proof",
          "meter",
          "quantity",
          "occurred_time"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UsageInvoice": {
        "description": "A Usage Invoice is Money's own invoice for a subject's usage. A `threshold`\ninvoice is cut mid-month; the `period` invoice nets those off.",
        "properties": {
          "amount_paid_minor": {
            "description": "Paid so far.",
            "readOnly": true,
            "type": "string"
          },
          "collection_mode": {
            "description": "`standard` or `hold`, fixed at issue.",
            "readOnly": true,
            "type": "string"
          },
          "due_time": {
            "description": "When it is due.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "gross_minor": {
            "description": "The amounts, minor units, decimal strings.",
            "readOnly": true,
            "type": "string"
          },
          "issue_time": {
            "description": "When it was issued.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "kind": {
            "description": "`period` or `threshold`.",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/usage_invoices/{usage_invoice}`.",
            "type": "string"
          },
          "number": {
            "description": "The invoice number.",
            "readOnly": true,
            "type": "string"
          },
          "period": {
            "description": "The month, `YYYY-MM`.",
            "readOnly": true,
            "type": "string"
          },
          "post_tax_credit_minor": {
            "description": "Credit settled after tax.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "description": "`tax_pending`, `issued`, or `void`.",
            "readOnly": true,
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Who owes it.",
            "readOnly": true
          },
          "subtotal_minor": {
            "description": "Before tax.",
            "readOnly": true,
            "type": "string"
          },
          "tax_minor": {
            "description": "The tax.",
            "readOnly": true,
            "type": "string"
          },
          "tax_pending_reason": {
            "description": "Why it is not issued yet, when `tax_pending` (for example `location_required`, `grant_tax_treatment`).",
            "readOnly": true,
            "type": "string"
          },
          "total_minor": {
            "description": "What is owed: subtotal plus tax minus post-tax credit.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`uinv_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.UsageMeter": {
        "description": "A Usage Meter names one kind of usage a merchant bills for: its unit and\nwhether usage may be recorded without a reservation. The merchant creates\nand changes it through this API; its prices are `UsageMeterPrice` records.",
        "properties": {
          "active": {
            "description": "A retired meter (false) refuses new usage; its history stays.",
            "type": "boolean"
          },
          "current_unit_price_nano": {
            "description": "The unit price in force now, nano-minor, a decimal string; empty before\nthe meter's first price.",
            "readOnly": true,
            "type": "string"
          },
          "display_name": {
            "description": "A name for people.",
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/usage_meters/{usage_meter}`; the id is the meter key.",
            "type": "string"
          },
          "reservation_optional": {
            "description": "Whether usage may be recorded without a reservation.",
            "type": "boolean"
          },
          "uid": {
            "description": "`umtr_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "unit": {
            "description": "The unit of one quantity, for example `token`. It cannot change once the\nmeter has recorded usage.",
            "type": "string"
          }
        },
        "required": [
          "unit"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UsageMeterPrice": {
        "description": "A Usage Meter Price is one entry of a meter's append-only price history. A\nprice applies from `effective_time` on, so a change never rewrites usage\nalready rated.",
        "properties": {
          "currency_code": {
            "description": "ISO 4217; it must be the environment's currency.",
            "type": "string"
          },
          "effective_time": {
            "description": "When it starts applying; now when absent. Not in the past, and after the\nmeter's latest price.",
            "format": "date-time",
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "meter": {
            "description": "The meter's key.",
            "type": "string"
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/usage_meter_prices/{usage_meter_price}`.",
            "type": "string"
          },
          "tax_code": {
            "description": "The processor's tax code for the usage line; empty for the merchant's default.",
            "type": "string"
          },
          "uid": {
            "description": "`umpr_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "unit_price_nano": {
            "description": "List price of one unit, nano-minor (a billionth of a minor unit), a decimal string.",
            "type": "string"
          }
        },
        "required": [
          "meter",
          "currency_code",
          "unit_price_nano"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UsageReservation": {
        "description": "A Usage Reservation holds usage before the work starts. Settling it records\nwhat was used and releases the rest; releasing it records nothing.",
        "properties": {
          "actor_proof": {
            "description": "For a customer organization: the token of the acting user, whose\nmembership of the organization is checked fresh. The subject is Sylphx\nAuth's bare organization id (`acme`), never a resource name. Never stored.",
            "type": "string",
            "writeOnly": true
          },
          "dark_refusal": {
            "description": "While enforcement is dark: why it would have been refused\n(`spend_limit_reached`, `no_payment_method`, `account_suspended`); empty otherwise.",
            "readOnly": true,
            "type": "string"
          },
          "expire_time": {
            "description": "When the hold ends.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "granted_quantity": {
            "description": "What was granted: at most `max_quantity`, less under headroom.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "max_quantity": {
            "description": "The most the work may use, in the meter's base unit.",
            "format": "int64",
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "meter": {
            "description": "The meter's lookup key.",
            "type": "string"
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/usage_reservations/{usage_reservation}`.",
            "type": "string"
          },
          "state": {
            "description": "`held`, `settled`, or `released`.",
            "readOnly": true,
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Who uses it."
          },
          "subject_proof": {
            "description": "The acting end user's access token, required on every reserve: Money\nproves the subject itself, fresh, with the caller's own key\n(`auth:sessions:verify`) or the merchant's configured issuer. Never\nstored. A raw id is refused with PERMISSION_DENIED (reason `subject_unverified`).",
            "type": "string",
            "writeOnly": true
          },
          "ttl": {
            "description": "How long the hold lasts, at most `600s`; default `600s`.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string",
            "writeOnly": true
          },
          "uid": {
            "description": "`ures_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "subject",
          "subject_proof",
          "meter",
          "max_quantity"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UsageSettings": {
        "description": "Usage Settings is the environment's usage-billing account: its currency, the\nenforcement switch (dark until a merchant admin turns it on), the free\nallowance, the dunning schedule and an extra token issuer. One per\nenvironment (AIP-156 singleton, id `default`).",
        "properties": {
          "currency_code": {
            "description": "The currency usage is rated and invoiced in (ISO 4217, upper case).",
            "type": "string"
          },
          "enforcement_enabled": {
            "description": "While false a reservation is always granted and a would-be refusal is\nonly recorded. Off until the merchant's admin turns it on.",
            "type": "boolean"
          },
          "extra_issuer": {
            "description": "A further token issuer (the merchant's own OIDC provider) besides Sylphx\nAuth; empty for Sylphx Auth only. It needs `extra_issuer_jwks_url`.",
            "type": "string"
          },
          "extra_issuer_audience": {
            "description": "The audience that issuer's tokens must carry; required with `extra_issuer`.",
            "type": "string"
          },
          "extra_issuer_jwks_url": {
            "description": "The issuer's HTTPS JWKS URL.",
            "type": "string"
          },
          "extra_issuer_org_claim": {
            "description": "The claim that names a customer organization in that issuer's tokens;\nempty means the issuer proves no organization subject.",
            "type": "string"
          },
          "free_allowance_nano": {
            "description": "What a subject with no payment method may use each month, nano-minor,\nas a decimal string.",
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/usage_settings/default`.",
            "type": "string"
          },
          "past_due_grace_days": {
            "description": "Days after an invoice's due time before the subject is past due.",
            "format": "int32",
            "type": "integer"
          },
          "suspend_grace_days": {
            "description": "Days after an invoice's due time before the subject is suspended.",
            "format": "int32",
            "type": "integer"
          },
          "uid": {
            "description": "`uset_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "currency_code"
        ],
        "type": "object"
      },
      "sylphx.money.v1.UsageStanding": {
        "description": "A subject's standing.",
        "properties": {
          "headroom_minor": {
            "description": "What the subject may still use now, minor units, a decimal string; empty\nwhen it has no limit.",
            "type": "string"
          },
          "payment_method_on_file": {
            "description": "Whether a payment method is on file.",
            "type": "boolean"
          },
          "state": {
            "description": "`active`, `past_due`, or `suspended`.",
            "type": "string"
          },
          "threshold_minor": {
            "description": "The amount that makes a threshold invoice be cut, minor units.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.money.v1.UsageTier": {
        "description": "A Usage Tier is a trust tier of the merchant's own: the limits a subject\nstarts at and rises to with payment history. Rank 0 is the base tier.",
        "properties": {
          "daily_limit_minor": {
            "description": "Daily exposure limit in minor units, a decimal string; empty for none.",
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "monthly_limit_minor": {
            "description": "Monthly exposure limit in minor units, a decimal string; empty for none.",
            "type": "string"
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/usage_tiers/{usage_tier}`; the id is the tier key.",
            "type": "string"
          },
          "rank": {
            "description": "Order of tiers; 0 is the base tier.",
            "format": "int32",
            "type": "integer"
          },
          "requires_paid_invoices": {
            "description": "Paid invoices needed to reach this tier.",
            "format": "int32",
            "type": "integer"
          },
          "requires_paid_minor": {
            "description": "Paid total, minor units, needed to reach this tier.",
            "type": "string"
          },
          "threshold_minor": {
            "description": "The amount an invoice would make due at which a threshold invoice is cut.",
            "type": "string"
          },
          "uid": {
            "description": "`utier_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "rank",
          "threshold_minor"
        ],
        "type": "object"
      },
      "sylphx.money.v1.VerifyStorePurchaseRequest": {
        "description": "The request of VerifyStorePurchase.",
        "properties": {
          "bundle_id": {
            "description": "App Store, with `transaction_id`: the app's bundle id.",
            "type": "string"
          },
          "package_name": {
            "description": "Google Play: the package name, when the connection covers several.",
            "type": "string"
          },
          "parent": {
            "description": "The environment the purchase is verified in.",
            "type": "string",
            "x-sylphx-resource-reference": "money.sylphx.com/StorePurchase"
          },
          "product_id": {
            "description": "Google Play: the store product id (for a subscription, its id).",
            "type": "string"
          },
          "purchase_token": {
            "description": "Google Play: the purchase token.",
            "type": "string"
          },
          "signed_transaction": {
            "description": "App Store: the StoreKit 2 signed transaction (`jwsRepresentation`).",
            "type": "string"
          },
          "store": {
            "description": "`app_store` or `google_play`.",
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/sylphx.money.v1.Subject",
            "description": "Who bought it."
          },
          "transaction_id": {
            "description": "App Store, instead of `signed_transaction`: the transaction id, for apps\non original StoreKit whose receipts carry no signed transaction. Money\nreads the transaction from Apple with the connection's key; Apple's\nsigned answer is the proof.",
            "type": "string"
          },
          "validate_only": {
            "description": "Verify fully and return the verdict Money would give, without writing\nanything: no record, no subject binding, no Google Play acknowledge or\nconsume, no entitlement, no ledger posting, no event, and no signed\n`grant_token`. Refusals are exactly the ones a real call gives. For\nmoving existing store sales onto Money, by comparing verdicts with the\nseller's own path before switching.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "subject",
          "store"
        ],
        "type": "object"
      },
      "sylphx.money.v1.VerifyStorePurchaseResponse": {
        "description": "The response of VerifyStorePurchase.",
        "properties": {
          "already_verified": {
            "description": "Whether this transaction was verified before; the record and grant are\nthe same.",
            "type": "boolean"
          },
          "customer_subscription": {
            "$ref": "#/components/schemas/sylphx.money.v1.CustomerSubscription",
            "description": "The subscription, for a subscription purchase."
          },
          "grant_claims": {
            "additionalProperties": true,
            "description": "With `validate_only`, the claims the grant would carry (the same JSON a\nsigned `grant_token` holds); empty otherwise.",
            "type": "object"
          },
          "grant_token": {
            "description": "A compact EdDSA JWS (`typ` `money-grant+jwt`) the app's server or client\nverifies offline against Money's published keys; it names the subject,\nthe store product, the transaction, the quantity, and the catalog grants.",
            "type": "string"
          },
          "store_completion": {
            "description": "`ClientVerifyStorePurchase` only: what Money did to finish the purchase\nwith the store: `acknowledged`, `consumed`, or `retry` (the store call\nfailed; call again later). Empty on `VerifyStorePurchase`.",
            "type": "string"
          },
          "store_purchase": {
            "$ref": "#/components/schemas/sylphx.money.v1.StorePurchase",
            "description": "The verified purchase."
          },
          "transferred": {
            "description": "`ClientVerifyStorePurchase` only: the purchase moved from another install\nto the caller (restore). Always false until restore transfer is served.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.network.v1.Certificate": {
        "description": "A Certificate covers names Sylphx terminates itself (the data door and\norigin). It is read-only to customers; customer hostnames on the web door\nare served by the edge without one. Its private key is a secret in Sylphx\nSecrets that nobody reads back.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/certificates/{certificate}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.network.v1.CertificateSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.network.v1.CertificateStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`crt_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.network.v1.CertificateIssuer": {
        "description": "CertificateIssuer is who signs a certificate.",
        "enum": [
          "acme",
          "origin"
        ],
        "type": "string"
      },
      "sylphx.network.v1.CertificateSpec": {
        "description": "CertificateSpec is the caller-writable state of a Certificate.",
        "properties": {
          "dns_names": {
            "description": "The names covered.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "issuer": {
            "$ref": "#/components/schemas/sylphx.network.v1.CertificateIssuer",
            "description": "Who signs it.",
            "x-sylphx-immutable": true
          }
        },
        "required": [
          "dns_names",
          "issuer"
        ],
        "type": "object"
      },
      "sylphx.network.v1.CertificateStatus": {
        "description": "CertificateStatus is the observed state of a Certificate.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "expire_time": {
            "description": "When the served certificate expires.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "renew_time": {
            "description": "When it was last renewed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "renewal_window_end_time": {
            "description": "When the CA's renewal window closes.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "renewal_window_start_time": {
            "description": "When the CA's renewal window opens.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.network.v1.CreateDomainRequest": {
        "description": "The request of CreateDomain.",
        "properties": {
          "domain": {
            "$ref": "#/components/schemas/sylphx.network.v1.Domain",
            "description": "The domain to create; only spec and caller-writable metadata are read."
          },
          "domain_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/Domain"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "domain"
        ],
        "type": "object"
      },
      "sylphx.network.v1.CreateEgressIdentityRequest": {
        "description": "The request of CreateEgressIdentity.",
        "properties": {
          "egress_identity": {
            "$ref": "#/components/schemas/sylphx.network.v1.EgressIdentity",
            "description": "The egress identity to create; only spec and caller-writable metadata are\nread."
          },
          "egress_identity_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/EgressIdentity"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "egress_identity"
        ],
        "type": "object"
      },
      "sylphx.network.v1.CreatePrivateLinkRequest": {
        "description": "The request of CreatePrivateLink.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/PrivateLink"
          },
          "private_link": {
            "$ref": "#/components/schemas/sylphx.network.v1.PrivateLink",
            "description": "The private link to create; only spec and caller-writable metadata are\nread."
          },
          "private_link_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "private_link"
        ],
        "type": "object"
      },
      "sylphx.network.v1.CreateRouteRequest": {
        "description": "The request of CreateRoute.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/Route"
          },
          "route": {
            "$ref": "#/components/schemas/sylphx.network.v1.Route",
            "description": "The route to create; only spec and caller-writable metadata are read."
          },
          "route_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "route"
        ],
        "type": "object"
      },
      "sylphx.network.v1.DeleteDomainRequest": {
        "description": "The request of DeleteDomain.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the domain to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/Domain"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.network.v1.DeleteEgressIdentityRequest": {
        "description": "The request of DeleteEgressIdentity.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the egress identity to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/EgressIdentity"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.network.v1.DeletePrivateLinkRequest": {
        "description": "The request of DeletePrivateLink.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the private link to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/PrivateLink"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.network.v1.DeleteRouteRequest": {
        "description": "The request of DeleteRoute.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the route to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/Route"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.network.v1.Domain": {
        "description": "A Domain is a name a project controls. It is verified once, before any\ncertificate or Route uses it; verification is fail-closed. The id is the\ndomain with dots as dashes; `spec.domain_name` is the name itself.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/domains/{domain}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.network.v1.DomainSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.network.v1.DomainStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`dom_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.network.v1.DomainSpec": {
        "description": "DomainSpec is the caller-writable state of a Domain.",
        "properties": {
          "domain_name": {
            "description": "The fully qualified name, for example `example.com`. Wildcards are\nrefused.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "verification_method": {
            "$ref": "#/components/schemas/sylphx.network.v1.VerificationMethod",
            "description": "How control is proven; default TXT."
          }
        },
        "required": [
          "domain_name"
        ],
        "type": "object"
      },
      "sylphx.network.v1.DomainStatus": {
        "description": "DomainStatus is the observed state of a Domain.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "verification": {
            "$ref": "#/components/schemas/sylphx.network.v1.DomainVerification",
            "description": "The record to publish.",
            "readOnly": true
          },
          "verified": {
            "description": "Whether control was proven.",
            "readOnly": true,
            "type": "boolean"
          },
          "verify_time": {
            "description": "When control was last proven.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.network.v1.DomainVerification": {
        "description": "DomainVerification is the record a caller publishes to prove control of a\ndomain.",
        "properties": {
          "record_name": {
            "description": "The DNS name to publish, for example `_sylphx-verify.example.com`.",
            "readOnly": true,
            "type": "string"
          },
          "record_type": {
            "description": "`TXT` or `CNAME`.",
            "readOnly": true,
            "type": "string"
          },
          "record_value": {
            "description": "The value to publish.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.network.v1.EdgeState": {
        "description": "EdgeState is the progress of a hostname at the edge.",
        "enum": [
          "pending",
          "active",
          "error"
        ],
        "type": "string"
      },
      "sylphx.network.v1.EgressIdentity": {
        "description": "An EgressIdentity is a declared, stable address set per region that a\nproject's outbound traffic leaves from, so third parties can allowlist it.\nTraffic never leaves under an undeclared address: when the identity cannot\nserve, selected traffic is dropped.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/egress_identities/{egress_identity}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.network.v1.EgressIdentitySpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.network.v1.EgressIdentityStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`egr_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.network.v1.EgressIdentitySpec": {
        "description": "EgressIdentitySpec is the caller-writable state of a EgressIdentity.",
        "properties": {
          "region": {
            "description": "The region the addresses live in.",
            "type": "string",
            "x-sylphx-immutable": true
          }
        },
        "required": [
          "region"
        ],
        "type": "object"
      },
      "sylphx.network.v1.EgressIdentityStatus": {
        "description": "EgressIdentityStatus is the observed state of a EgressIdentity.",
        "properties": {
          "addresses": {
            "description": "The IPv4 and IPv6 addresses traffic leaves from.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.network.v1.GetCertificateRequest": {
        "description": "The request of GetCertificate.",
        "properties": {
          "name": {
            "description": "The name of the certificate to get.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/Certificate"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.network.v1.GetDomainRequest": {
        "description": "The request of GetDomain.",
        "properties": {
          "name": {
            "description": "The name of the domain to get.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/Domain"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.network.v1.GetEgressIdentityRequest": {
        "description": "The request of GetEgressIdentity.",
        "properties": {
          "name": {
            "description": "The name of the egress identity to get.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/EgressIdentity"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.network.v1.GetPrivateLinkRequest": {
        "description": "The request of GetPrivateLink.",
        "properties": {
          "name": {
            "description": "The name of the private link to get.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/PrivateLink"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.network.v1.GetRouteRequest": {
        "description": "The request of GetRoute.",
        "properties": {
          "name": {
            "description": "The name of the route to get.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/Route"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.network.v1.ListCertificatesRequest": {
        "description": "The request of ListCertificates.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/Certificate"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.network.v1.ListCertificatesResponse": {
        "description": "The response of ListCertificates.",
        "properties": {
          "certificates": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.network.v1.Certificate"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.network.v1.ListDomainsRequest": {
        "description": "The request of ListDomains.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/Domain"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.network.v1.ListDomainsResponse": {
        "description": "The response of ListDomains.",
        "properties": {
          "domains": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.network.v1.Domain"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.network.v1.ListEgressIdentitiesRequest": {
        "description": "The request of ListEgressIdentities.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/EgressIdentity"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.network.v1.ListEgressIdentitiesResponse": {
        "description": "The response of ListEgressIdentities.",
        "properties": {
          "egress_identities": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.network.v1.EgressIdentity"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.network.v1.ListPrivateLinksRequest": {
        "description": "The request of ListPrivateLinks.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/PrivateLink"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.network.v1.ListPrivateLinksResponse": {
        "description": "The response of ListPrivateLinks.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "private_links": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.network.v1.PrivateLink"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.network.v1.ListRoutesRequest": {
        "description": "The request of ListRoutes.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/Route"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.network.v1.ListRoutesResponse": {
        "description": "The response of ListRoutes.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "routes": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.network.v1.Route"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.network.v1.PrivateLink": {
        "description": "A PrivateLink lets a customer network reach a Service without the public\ninternet. Established links keep carrying traffic while the control plane is\nimpaired; only changes wait.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/private_links/{private_link}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.network.v1.PrivateLinkSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.network.v1.PrivateLinkStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`plk_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.network.v1.PrivateLinkSpec": {
        "description": "PrivateLinkSpec is the caller-writable state of a PrivateLink.",
        "properties": {
          "allowed_consumers": {
            "description": "The customer network accounts allowed to connect.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "region": {
            "description": "The region of the link.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "service": {
            "description": "The Hosting Service exposed.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "hosting.sylphx.com/Service"
          }
        },
        "required": [
          "service",
          "region",
          "allowed_consumers"
        ],
        "type": "object"
      },
      "sylphx.network.v1.PrivateLinkState": {
        "description": "PrivateLinkState is the lifecycle of a PrivateLink.",
        "enum": [
          "pending",
          "established",
          "rejected"
        ],
        "type": "string"
      },
      "sylphx.network.v1.PrivateLinkStatus": {
        "description": "PrivateLinkStatus is the observed state of a PrivateLink.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "endpoint_service": {
            "description": "The endpoint the consumer connects its network to.",
            "readOnly": true,
            "type": "string"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.network.v1.PrivateLinkState",
            "description": "The lifecycle state.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.network.v1.Route": {
        "description": "A Route sends one exact host and path prefix to one backend. Every\ndestination has its own Route; a wildcard grants no authority. Overlapping\n(host, path prefix) pairs are refused.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/routes/{route}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.network.v1.RouteSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.network.v1.RouteStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`rte_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.network.v1.RouteEdge": {
        "description": "RouteEdge is the edge's view of a Route on a customer domain.",
        "properties": {
          "hostname_state": {
            "$ref": "#/components/schemas/sylphx.network.v1.EdgeState",
            "description": "Whether the edge accepts the hostname.",
            "readOnly": true
          },
          "tls_state": {
            "$ref": "#/components/schemas/sylphx.network.v1.EdgeState",
            "description": "Whether the edge serves TLS for the hostname.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.network.v1.RouteRedirect": {
        "description": "RouteRedirect answers a Route with a redirect instead of a backend.",
        "properties": {
          "status_code": {
            "description": "301, 302, 307, or 308; default 308.",
            "format": "int32",
            "type": "integer"
          },
          "target_uri": {
            "description": "The absolute URL to redirect to.",
            "type": "string"
          }
        },
        "required": [
          "target_uri"
        ],
        "type": "object"
      },
      "sylphx.network.v1.RouteSpec": {
        "description": "RouteSpec is the caller-writable state of a Route.",
        "properties": {
          "host": {
            "description": "The exact host: a verified Domain or a subdomain of one.",
            "type": "string"
          },
          "path_prefix": {
            "description": "The path prefix; default `/`.",
            "type": "string"
          },
          "redirect": {
            "$ref": "#/components/schemas/sylphx.network.v1.RouteRedirect",
            "description": "A redirect."
          },
          "service": {
            "description": "A Hosting Service.",
            "type": "string",
            "x-sylphx-resource-reference": "hosting.sylphx.com/Service"
          }
        },
        "required": [
          "host"
        ],
        "type": "object"
      },
      "sylphx.network.v1.RouteStatus": {
        "description": "RouteStatus is the observed state of a Route.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "edge": {
            "$ref": "#/components/schemas/sylphx.network.v1.RouteEdge",
            "description": "The edge's view of the hostname.",
            "readOnly": true
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.network.v1.UpdateDomainRequest": {
        "description": "The request of UpdateDomain.",
        "properties": {
          "allow_missing": {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "domain": {
            "$ref": "#/components/schemas/sylphx.network.v1.Domain",
            "description": "The domain to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "sylphx.network.v1.UpdateEgressIdentityRequest": {
        "description": "The request of UpdateEgressIdentity.",
        "properties": {
          "allow_missing": {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "egress_identity": {
            "$ref": "#/components/schemas/sylphx.network.v1.EgressIdentity",
            "description": "The egress identity to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "egress_identity"
        ],
        "type": "object"
      },
      "sylphx.network.v1.UpdatePrivateLinkRequest": {
        "description": "The request of UpdatePrivateLink.",
        "properties": {
          "allow_missing": {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "private_link": {
            "$ref": "#/components/schemas/sylphx.network.v1.PrivateLink",
            "description": "The private link to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "private_link"
        ],
        "type": "object"
      },
      "sylphx.network.v1.UpdateRouteRequest": {
        "description": "The request of UpdateRoute.",
        "properties": {
          "allow_missing": {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "route": {
            "$ref": "#/components/schemas/sylphx.network.v1.Route",
            "description": "The route to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "route"
        ],
        "type": "object"
      },
      "sylphx.network.v1.VerificationMethod": {
        "description": "VerificationMethod is how a domain proves control.",
        "enum": [
          "txt",
          "cname"
        ],
        "type": "string"
      },
      "sylphx.network.v1.VerifyDomainRequest": {
        "description": "The request of VerifyDomain.",
        "properties": {
          "name": {
            "description": "The name of the domain.",
            "type": "string",
            "x-sylphx-resource-reference": "network.sylphx.com/Domain"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ArchiveInboxItemRequest": {
        "description": "The request of ArchiveInboxItem.",
        "properties": {
          "name": {
            "description": "The name of the inbox item.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/InboxItem"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.Broadcast": {
        "description": "A Broadcast sends one template to a segment of recipients, fired by a\nWorkflows Schedule. Every recipient still passes suppression and\npreferences.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/broadcasts/{broadcast}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.notify.v1.BroadcastSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.notify.v1.BroadcastStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`bct_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.BroadcastSpec": {
        "description": "BroadcastSpec is the caller-writable state of a Broadcast.",
        "properties": {
          "data": {
            "additionalProperties": true,
            "description": "Template variables shared by every message.",
            "type": "object"
          },
          "segment_filter": {
            "description": "AIP-160 filter over recipient labels and fields selecting the segment.",
            "type": "string"
          },
          "send_time": {
            "description": "When to send; unset sends only on `:send`.",
            "format": "date-time",
            "type": "string"
          },
          "template": {
            "description": "The template to render.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Template"
          },
          "topic": {
            "description": "The topic every message carries.",
            "type": "string"
          }
        },
        "required": [
          "topic",
          "template",
          "segment_filter"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.BroadcastState": {
        "description": "The progress of a Broadcast.",
        "enum": [
          "draft",
          "scheduled",
          "sending",
          "sent",
          "cancelled"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.BroadcastStatus": {
        "description": "BroadcastStatus is the observed state of a Broadcast.",
        "properties": {
          "admitted_count": {
            "description": "Messages admitted.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "schedule": {
            "description": "The Workflows Schedule that fires it.",
            "readOnly": true,
            "type": "string"
          },
          "skipped_count": {
            "description": "Recipients skipped by suppression or preference.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.notify.v1.BroadcastState",
            "description": "The broadcast's progress.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.CancelBroadcastRequest": {
        "description": "The request of CancelBroadcast.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the broadcast.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Broadcast"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.CancelMessageRequest": {
        "description": "The request of CancelMessage.",
        "properties": {
          "name": {
            "description": "The name of the message.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Message"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.Channel": {
        "description": "A Notify channel.",
        "enum": [
          "email",
          "sms",
          "push",
          "inbox"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.ChannelDelivery": {
        "description": "One channel's delivery of a Message.",
        "properties": {
          "attempts": {
            "description": "Hand-off attempts so far.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "channel": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Channel",
            "description": "The channel.",
            "readOnly": true
          },
          "error_code": {
            "description": "A machine-readable failure code.",
            "readOnly": true,
            "type": "string"
          },
          "masked_address": {
            "description": "The address, masked.",
            "readOnly": true,
            "type": "string"
          },
          "provider_receipt": {
            "description": "The provider's acceptance id.",
            "readOnly": true,
            "type": "string"
          },
          "provider_response": {
            "description": "The provider's last reply, for example `250 2.0.0 queued as …`.",
            "readOnly": true,
            "type": "string"
          },
          "receipt_time": {
            "description": "When the provider receipt closed the delivery.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.notify.v1.ChannelDeliveryState",
            "description": "The delivery state.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ChannelDeliveryState": {
        "description": "The state of one channel delivery.",
        "enum": [
          "pending",
          "sent",
          "delivered",
          "bounced",
          "failed",
          "skipped",
          "captured",
          "suppressed"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.CreateBroadcastRequest": {
        "description": "The request of CreateBroadcast.",
        "properties": {
          "broadcast": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Broadcast",
            "description": "The broadcast to create; only caller-writable fields are read."
          },
          "broadcast_id": {
            "description": "The broadcast id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Broadcast"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "broadcast"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.CreateEmailDomainRequest": {
        "description": "The request of CreateEmailDomain.",
        "properties": {
          "email_domain": {
            "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomain",
            "description": "The email domain to create; only caller-writable fields are read."
          },
          "email_domain_id": {
            "description": "The email domain id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/EmailDomain"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "email_domain"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.CreateMailboxConnectLinkRequest": {
        "description": "The request of CreateMailboxConnectLink.",
        "properties": {
          "mailbox_connect_link": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailboxConnectLink",
            "description": "The mailbox connect link to create; only caller-writable fields are read."
          },
          "mailbox_connect_link_id": {
            "description": "The mailbox connect link id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/MailboxConnectLink"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "mailbox_connect_link"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.CreateMailboxOauthAppRequest": {
        "description": "The request of CreateMailboxOauthApp.",
        "properties": {
          "mailbox_oauth_app": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailboxOauthApp",
            "description": "The mailbox OAuth app to create; only caller-writable fields are read."
          },
          "mailbox_oauth_app_id": {
            "description": "The mailbox OAuth app id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/MailboxOauthApp"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "mailbox_oauth_app"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.CreateMailboxRequest": {
        "description": "The request of CreateMailbox.",
        "properties": {
          "mailbox": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Mailbox",
            "description": "The mailbox to create; only caller-writable fields are read."
          },
          "mailbox_id": {
            "description": "The mailbox id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Mailbox"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "mailbox"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.CreateMessageRequest": {
        "description": "The request of CreateMessage.",
        "properties": {
          "message": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Message",
            "description": "The message to create; only caller-writable fields are read."
          },
          "message_id": {
            "description": "The message id, the final name segment; the server assigns one when empty.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Message"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "message"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.CreateRecipientRequest": {
        "description": "The request of CreateRecipient.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Recipient"
          },
          "recipient": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Recipient",
            "description": "The recipient to create; only caller-writable fields are read."
          },
          "recipient_id": {
            "description": "The recipient id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "recipient"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.CreateRouteRequest": {
        "description": "The request of CreateRoute.",
        "properties": {
          "parent": {
            "description": "The email domain to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Route"
          },
          "route": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Route",
            "description": "The route to create; only caller-writable fields are read."
          },
          "route_id": {
            "description": "The route id, the final name segment; the server assigns one when empty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "route"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.CreateSenderRequest": {
        "description": "The request of CreateSender.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Sender"
          },
          "sender": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Sender",
            "description": "The sender to create; only caller-writable fields are read."
          },
          "sender_id": {
            "description": "The sender id, the final name segment; the server assigns one when empty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "sender"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.CreateSuppressionRequest": {
        "description": "The request of CreateSuppression.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Suppression"
          },
          "suppression": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Suppression",
            "description": "The suppression to create; only caller-writable fields are read."
          },
          "suppression_id": {
            "description": "The suppression id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "suppression"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.CreateTemplateRequest": {
        "description": "The request of CreateTemplate.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Template"
          },
          "template": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Template",
            "description": "The template to create; only caller-writable fields are read."
          },
          "template_id": {
            "description": "The template id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "template"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.DeleteBroadcastRequest": {
        "description": "The request of DeleteBroadcast.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the broadcast does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the broadcast to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Broadcast"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.DeleteEmailDomainRequest": {
        "description": "The request of DeleteEmailDomain.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the email domain does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete the domain's routes.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the email domain to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/EmailDomain"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.DeleteMailboxOauthAppRequest": {
        "description": "The request of DeleteMailboxOauthApp.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the mailbox OAuth app does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the mailbox OAuth app to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/MailboxOauthApp"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.DeleteMailboxRequest": {
        "description": "The request of DeleteMailbox.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the mailbox does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Delete its inbound email with it; a mailbox holding inbound email is not\ndeleted without it.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the mailbox to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Mailbox"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.DeletePreferenceRequest": {
        "description": "The request of DeletePreference.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the preference does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the preference to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Preference"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.DeleteRecipientRequest": {
        "description": "The request of DeleteRecipient.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the recipient does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete the recipient's preferences and inbox items.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the recipient to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Recipient"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.DeleteRouteRequest": {
        "description": "The request of DeleteRoute.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the route does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the route to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Route"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.DeleteSenderRequest": {
        "description": "The request of DeleteSender.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the sender does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the sender to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Sender"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.DeleteSuppressionRequest": {
        "description": "The request of DeleteSuppression.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the suppression does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the suppression to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Suppression"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.DeleteTemplateRequest": {
        "description": "The request of DeleteTemplate.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the template does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the template to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Template"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.DnsRecord": {
        "description": "A DNS record an Email Domain needs.",
        "properties": {
          "host": {
            "description": "The fully qualified host.",
            "readOnly": true,
            "type": "string"
          },
          "priority": {
            "description": "The MX preference; zero for other record types.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "record_type": {
            "description": "The record type: `TXT`, `CNAME`, or `MX`.",
            "readOnly": true,
            "type": "string"
          },
          "value": {
            "description": "The value to publish.",
            "readOnly": true,
            "type": "string"
          },
          "verified": {
            "description": "Whether the published value matches.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.EmailContent": {
        "description": "Email content; bodies are Mustache templates.",
        "properties": {
          "html_body": {
            "description": "The HTML body.",
            "type": "string"
          },
          "sender_address": {
            "description": "The From address; its domain is a verified Email Domain.",
            "type": "string"
          },
          "sender_name": {
            "description": "The From display name, for example the app's name.",
            "type": "string"
          },
          "subject": {
            "description": "The subject.",
            "type": "string"
          },
          "text_body": {
            "description": "The plain-text body.",
            "type": "string"
          }
        },
        "required": [
          "sender_address",
          "subject"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.EmailDomain": {
        "description": "An Email Domain is an email domain Notify sends from and receives for. It\nsends only after its DKIM and SPF records verify; every email is DKIM-signed\nwith the domain's non-exportable key from Sylphx Keys, rotated with overlap. It\nreceives only after every MX record of the domain points at the platform.\nNo key material is ever returned.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/mail_domains/{mail_domain}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomainSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomainStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`edm_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.EmailDomainReceiving": {
        "description": "The receiving half of an Email Domain.",
        "properties": {
          "enabled": {
            "description": "Receive mail for the domain; needs every MX record at the platform.",
            "type": "boolean"
          },
          "mode": {
            "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomainReceivingMode",
            "description": "How the domain's mail reaches the platform; `ALL` when unset."
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.EmailDomainReceivingMode": {
        "description": "How an Email Domain's mail reaches the platform.",
        "enum": [
          "all"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.EmailDomainReceivingState": {
        "description": "Whether the platform receives mail for an Email Domain.",
        "enum": [
          "disabled",
          "pending",
          "verified",
          "degraded"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.EmailDomainSending": {
        "description": "The sending half of an Email Domain.",
        "properties": {
          "enabled": {
            "description": "Send from the domain. Default true.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.EmailDomainSpec": {
        "description": "EmailDomainSpec is the caller-writable state of an EmailDomain.",
        "properties": {
          "domain": {
            "description": "The domain, for example `mail.example.com`.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "receiving": {
            "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomainReceiving",
            "description": "Receiving; the platform accepts mail for the domain."
          },
          "return_path_label": {
            "description": "The return-path (bounce) subdomain label; default `bounces`.",
            "type": "string"
          },
          "sending": {
            "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomainSending",
            "description": "Sending; the DKIM key and SPF include. Unset sends, as before."
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.EmailDomainStatus": {
        "description": "EmailDomainStatus is the observed state of an EmailDomain.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "dkim_selector": {
            "description": "The DKIM selector in use.",
            "readOnly": true,
            "type": "string"
          },
          "dns_records": {
            "description": "The records to publish: DKIM, SPF, return path, DMARC.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.DnsRecord"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "receiving_state": {
            "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomainReceivingState",
            "description": "Whether the platform receives mail for the domain.",
            "readOnly": true
          },
          "receiving_verify_time": {
            "description": "When the MX records last verified.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "verified": {
            "description": "Whether every required record verified; only a verified domain sends.",
            "readOnly": true,
            "type": "boolean"
          },
          "verify_time": {
            "description": "When the records last verified.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.EraseMailboxAddressRequest": {
        "description": "The request of EraseMailboxAddress.",
        "properties": {
          "address": {
            "description": "The email address whose data is removed.",
            "type": "string"
          },
          "name": {
            "description": "The name of the mailbox.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Mailbox"
          }
        },
        "required": [
          "name",
          "address"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.EraseMailboxAddressResponse": {
        "description": "The response of EraseMailboxAddress.",
        "properties": {
          "erased_count": {
            "description": "How many inbound emails were scrubbed.",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.GetBroadcastRequest": {
        "description": "The request of GetBroadcast.",
        "properties": {
          "name": {
            "description": "The name of the broadcast to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Broadcast"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.GetEmailDomainRequest": {
        "description": "The request of GetEmailDomain.",
        "properties": {
          "name": {
            "description": "The name of the email domain to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/EmailDomain"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.GetInboundEmailRequest": {
        "description": "The request of GetInboundEmail.",
        "properties": {
          "name": {
            "description": "The name of the inbound email to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/InboundEmail"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.GetInboxItemRequest": {
        "description": "The request of GetInboxItem.",
        "properties": {
          "name": {
            "description": "The name of the inbox item to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/InboxItem"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.GetMailboxConnectLinkRequest": {
        "description": "The request of GetMailboxConnectLink.",
        "properties": {
          "name": {
            "description": "The name of the mailbox connect link to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/MailboxConnectLink"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.GetMailboxOauthAppRequest": {
        "description": "The request of GetMailboxOauthApp.",
        "properties": {
          "name": {
            "description": "The name of the mailbox OAuth app to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/MailboxOauthApp"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.GetMailboxRequest": {
        "description": "The request of GetMailbox.",
        "properties": {
          "name": {
            "description": "The name of the mailbox to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Mailbox"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.GetMessageRequest": {
        "description": "The request of GetMessage.",
        "properties": {
          "name": {
            "description": "The name of the message to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Message"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.GetPreferenceRequest": {
        "description": "The request of GetPreference.",
        "properties": {
          "name": {
            "description": "The name of the preference to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Preference"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.GetRecipientRequest": {
        "description": "The request of GetRecipient.",
        "properties": {
          "name": {
            "description": "The name of the recipient to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Recipient"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.GetRouteRequest": {
        "description": "The request of GetRoute.",
        "properties": {
          "name": {
            "description": "The name of the route to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Route"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.GetSenderRequest": {
        "description": "The request of GetSender.",
        "properties": {
          "name": {
            "description": "The name of the sender to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Sender"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.GetSuppressionRequest": {
        "description": "The request of GetSuppression.",
        "properties": {
          "name": {
            "description": "The name of the suppression to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Suppression"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.GetTemplateRequest": {
        "description": "The request of GetTemplate.",
        "properties": {
          "name": {
            "description": "The name of the template to get.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Template"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.InboundEmail": {
        "description": "An Inbound Email is one mail a mailbox holds, received or sent, kept as\nevidence: parsed once, never changed except by erasure. Consumers read the\nfeed in `sequence` order.",
        "properties": {
          "automated": {
            "description": "Sent by software: Auto-Submitted, Precedence bulk or list, auto-reply\nheaders, or a delivery report.",
            "readOnly": true,
            "type": "boolean"
          },
          "cc_addresses": {
            "description": "Cc addresses.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "direction": {
            "$ref": "#/components/schemas/sylphx.notify.v1.InboundEmailDirection",
            "description": "Received by the mailbox, or found in its Sent folder.",
            "readOnly": true
          },
          "erased": {
            "description": "Personal data removed by erasure; the dedupe key stays.",
            "readOnly": true,
            "type": "boolean"
          },
          "html_body": {
            "description": "The HTML body as received; render it only through a sanitizer.",
            "readOnly": true,
            "type": "string"
          },
          "message": {
            "description": "The Notify Message that sent it, for mail Notify sent as this mailbox.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Message"
          },
          "message_id": {
            "description": "The Message-ID without angle brackets; the dedupe key. Mail without one\ngets `sha256-<hex>@invalid`.",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/mailboxes/{mailbox}/inbound_emails/{inbound_email}`.",
            "type": "string"
          },
          "parent_message_id": {
            "description": "In-Reply-To: the Message-ID this answers, without angle brackets.",
            "readOnly": true,
            "type": "string"
          },
          "raw_sha256": {
            "description": "SHA-256 of the raw message, hex.",
            "readOnly": true,
            "type": "string"
          },
          "receive_time": {
            "description": "The Date header, else when the mailbox received it.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "recipient_addresses": {
            "description": "The To addresses.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "references": {
            "description": "References, oldest first.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "sender_address": {
            "description": "The From address, lower case.",
            "readOnly": true,
            "type": "string"
          },
          "sender_name": {
            "description": "The From display name.",
            "readOnly": true,
            "type": "string"
          },
          "sequence": {
            "description": "The feed position, increasing within the environment; filter\n`sequence > N` to resume after the last one handled.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "size_bytes": {
            "description": "The raw message size.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "subject": {
            "description": "The subject.",
            "readOnly": true,
            "type": "string"
          },
          "text_body": {
            "description": "The plain-text body.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`ieml_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.InboundEmailDirection": {
        "description": "Whether an Inbound Email came in or went out.",
        "enum": [
          "received",
          "sent"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.InboxContent": {
        "description": "In-app inbox content.",
        "properties": {
          "action_uri": {
            "description": "Where the item links.",
            "type": "string"
          },
          "body": {
            "description": "The body.",
            "type": "string"
          },
          "title": {
            "description": "The title.",
            "type": "string"
          }
        },
        "required": [
          "title"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.InboxItem": {
        "description": "An Inbox Item is one entry of a recipient's in-app feed. Clients receive it\nlive over an Events Realtime Channel and page it here.",
        "properties": {
          "action_uri": {
            "description": "Where the item links.",
            "readOnly": true,
            "type": "string"
          },
          "body": {
            "description": "The rendered body.",
            "readOnly": true,
            "type": "string"
          },
          "message": {
            "description": "The Message that produced it.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Message"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}/inbox_items/{inbox_item}`.",
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.notify.v1.InboxItemState",
            "description": "Read, unread, or archived.",
            "readOnly": true
          },
          "title": {
            "description": "The rendered title.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`ibx_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.InboxItemState": {
        "description": "The state of an inbox item.",
        "enum": [
          "unread",
          "read",
          "archived"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.ListBroadcastsRequest": {
        "description": "The request of ListBroadcasts.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Broadcast"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListBroadcastsResponse": {
        "description": "The response of ListBroadcasts.",
        "properties": {
          "broadcasts": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.Broadcast"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ListEmailDomainsRequest": {
        "description": "The request of ListEmailDomains.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/EmailDomain"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListEmailDomainsResponse": {
        "description": "The response of ListEmailDomains.",
        "properties": {
          "email_domains": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomain"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ListInboundEmailsRequest": {
        "description": "The request of ListInboundEmails.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The mailbox to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/InboundEmail"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListInboundEmailsResponse": {
        "description": "The response of ListInboundEmails.",
        "properties": {
          "inbound_emails": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.InboundEmail"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ListInboxItemsRequest": {
        "description": "The request of ListInboxItems.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/InboxItem"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListInboxItemsResponse": {
        "description": "The response of ListInboxItems.",
        "properties": {
          "inbox_items": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.InboxItem"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ListMailboxConnectLinksRequest": {
        "description": "The request of ListMailboxConnectLinks.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/MailboxConnectLink"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListMailboxConnectLinksResponse": {
        "description": "The response of ListMailboxConnectLinks.",
        "properties": {
          "mailbox_connect_links": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.MailboxConnectLink"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ListMailboxOauthAppsRequest": {
        "description": "The request of ListMailboxOauthApps.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/MailboxOauthApp"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListMailboxOauthAppsResponse": {
        "description": "The response of ListMailboxOauthApps.",
        "properties": {
          "mailbox_oauth_apps": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.MailboxOauthApp"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ListMailboxesRequest": {
        "description": "The request of ListMailboxes.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Mailbox"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListMailboxesResponse": {
        "description": "The response of ListMailboxes.",
        "properties": {
          "mailboxes": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.Mailbox"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ListMessagesRequest": {
        "description": "The request of ListMessages.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Message"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListMessagesResponse": {
        "description": "The response of ListMessages.",
        "properties": {
          "messages": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.Message"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ListPreferencesRequest": {
        "description": "The request of ListPreferences.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Preference"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListPreferencesResponse": {
        "description": "The response of ListPreferences.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "preferences": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.Preference"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ListRecipientsRequest": {
        "description": "The request of ListRecipients.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Recipient"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListRecipientsResponse": {
        "description": "The response of ListRecipients.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "recipients": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.Recipient"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ListRoutesRequest": {
        "description": "The request of ListRoutes.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The email domain to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Route"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListRoutesResponse": {
        "description": "The response of ListRoutes.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "routes": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.Route"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ListSendersRequest": {
        "description": "The request of ListSenders.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Sender"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListSendersResponse": {
        "description": "The response of ListSenders.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "senders": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.Sender"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ListSuppressionsRequest": {
        "description": "The request of ListSuppressions.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Suppression"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListSuppressionsResponse": {
        "description": "The response of ListSuppressions.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "suppressions": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.Suppression"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.ListTemplatesRequest": {
        "description": "The request of ListTemplates.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Template"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.ListTemplatesResponse": {
        "description": "The response of ListTemplates.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "templates": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.Template"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.MailServer": {
        "description": "One mail server of a connected mailbox.",
        "properties": {
          "host": {
            "description": "The host name.",
            "type": "string"
          },
          "port": {
            "description": "The port; IMAP 993 and SMTP 465 when unset.",
            "format": "int32",
            "type": "integer"
          },
          "security": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailServerSecurity",
            "description": "How the connection is secured."
          },
          "username": {
            "description": "The login user; the mailbox address when unset.",
            "type": "string"
          }
        },
        "required": [
          "host"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.MailServerSecurity": {
        "description": "How a mail server connection is secured.",
        "enum": [
          "tls",
          "starttls"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.Mailbox": {
        "description": "A Mailbox is an email address Notify reads from and sends as. A `CONNECTED`\nmailbox is an existing mailbox at any provider, reached over IMAP (read\nonly) and SMTP with its own login, either a password or an OAuth 2.0 grant\n(XOAUTH2) at Google or Microsoft; a `HOSTED` mailbox receives at an\naddress whose MX is Sylphx. Mail it receives becomes Inbound Email records.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/mailboxes/{mailbox}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailboxSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailboxStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`mbx_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.MailboxAuthKind": {
        "description": "How a connected Mailbox logs in.",
        "enum": [
          "password",
          "oauth"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.MailboxConnectLink": {
        "description": "A Mailbox Connect Link is a hosted page that a platform customer's server\nmints with its own server key for one end user, who approves the\nprovider's consent there. The mailbox it connects lives in the customer's\nenvironment, and the end user signs in to nothing of Sylphx and sees no\nSylphx name. It is single use and expires (the Stripe Account Link model):\npressing Continue on the page claims it, so a link preview's fetch does\nnot; a claimed or expired link sends the end user to `refresh_url`, where\nthe customer's server mints a new one.",
        "properties": {
          "address": {
            "description": "The address the provider confirmed.",
            "readOnly": true,
            "type": "string"
          },
          "backfill_start_time": {
            "description": "The new mailbox reads mail received on or after this day on its first\npoll.",
            "format": "date-time",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "complete_time": {
            "description": "When the end user finished, connected or failed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "connected_mailbox": {
            "description": "The mailbox it connected or reconnected.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Mailbox"
          },
          "display_name": {
            "description": "The From display name of the new mailbox.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "error_code": {
            "description": "Why it failed: `consent_denied`, `scope_missing` (the end user unticked a\nscope), `address_mismatch` (a reconnect signed in as another address),\n`address_in_use` (another mailbox of the environment has the address),\n`plan_limit_reached`, or `provider_error`.",
            "readOnly": true,
            "type": "string"
          },
          "expire_time": {
            "description": "When it expires.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "login_hint": {
            "description": "The address to suggest on the consent screen (`login_hint`); the\nmailbox takes the address the provider confirms, whatever this says.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "mailbox": {
            "description": "The mailbox to reconnect, keeping its id and feed; it must be signed in\nas the same address. Empty creates a new connected mailbox.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "notify.sylphx.com/Mailbox"
          },
          "mailbox_id": {
            "description": "The id of the new mailbox; the server assigns one when empty.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata; labels may carry the customer's own end-user id."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/mailbox_connect_links/{mailbox_connect_link}`.",
            "type": "string"
          },
          "provider": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailboxOauthProvider",
            "description": "The provider whose consent the page opens; the environment needs that\nprovider's Mailbox OAuth App.",
            "x-sylphx-immutable": true
          },
          "refresh_url": {
            "description": "Where a claimed or expired link sends the end user, HTTPS; your server\nmints a new link there. Empty shows a page saying the link has expired.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "return_url": {
            "description": "Where the end user lands when done, HTTPS, with `connect_link={id}` and\n`result=connected` or `result=failed` added to the query. The query\nproves nothing: read the link back with your key for the outcome.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailboxConnectLinkState",
            "description": "The lifecycle state.",
            "readOnly": true
          },
          "ttl": {
            "description": "How long the link stays open; default 1 hour, at most 7 days.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string",
            "writeOnly": true
          },
          "uid": {
            "description": "`mcl_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "url": {
            "description": "The link to hand the end user. It is a bearer secret: only the create\ncall returns it, and only its hash is stored.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-sensitive": true
          }
        },
        "required": [
          "provider",
          "return_url"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.MailboxConnectLinkState": {
        "description": "The lifecycle of a Mailbox Connect Link.",
        "enum": [
          "pending",
          "claimed",
          "connected",
          "failed",
          "expired"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.MailboxKind": {
        "description": "How a Mailbox receives mail.",
        "enum": [
          "connected",
          "hosted"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.MailboxOauthApp": {
        "description": "A Mailbox OAuth App is the platform customer's own OAuth client at Google\nor Microsoft. End users consent to it, so the consent screen names the\ncustomer's app and never Sylphx, and every `OAUTH` mailbox of its provider\nin the environment refreshes its grant against it. An environment has at\nmost one per provider.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/mailbox_oauth_apps/{mailbox_oauth_app}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailboxOauthAppSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailboxOauthAppStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`moa_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.MailboxOauthAppSpec": {
        "description": "MailboxOauthAppSpec is the caller-writable state of a Mailbox OAuth App.",
        "properties": {
          "client_id": {
            "description": "The client id the provider issued.",
            "type": "string"
          },
          "client_secret": {
            "description": "The client secret; write-only, sealed at rest, never returned.",
            "type": "string",
            "writeOnly": true,
            "x-sylphx-sensitive": true
          },
          "provider": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailboxOauthProvider",
            "description": "The provider.",
            "x-sylphx-immutable": true
          },
          "tenant": {
            "description": "Microsoft only: who may consent, `common` (the default: any work, school\nor personal account), `organizations`, `consumers`, or one tenant id.",
            "type": "string"
          }
        },
        "required": [
          "provider",
          "client_id"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.MailboxOauthAppStatus": {
        "description": "MailboxOauthAppStatus is the observed state of a Mailbox OAuth App.",
        "properties": {
          "client_secret_set": {
            "description": "Whether a client secret is stored.",
            "readOnly": true,
            "type": "boolean"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "redirect_uri": {
            "description": "The redirect URI to register on the provider's client.",
            "readOnly": true,
            "type": "string"
          },
          "scopes": {
            "description": "The scopes a connect link asks for: Google `https://mail.google.com/`\n(a restricted scope: a public app needs Google's verification), and\nMicrosoft `IMAP.AccessAsUser.All`, `SMTP.Send` and `offline_access`, each\nwith `openid email` to learn the address.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.MailboxOauthProvider": {
        "description": "An OAuth provider of connected mailboxes.",
        "enum": [
          "google",
          "microsoft"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.MailboxSpec": {
        "description": "MailboxSpec is the caller-writable state of a Mailbox.",
        "properties": {
          "address": {
            "description": "The address, for example `support@example.com`.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "append_sent": {
            "description": "Save a copy of mail sent as this mailbox to its Sent folder (IMAP\nAPPEND); off when the provider saves one itself.",
            "type": "boolean"
          },
          "auth_kind": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailboxAuthKind",
            "description": "How a connected mailbox logs in to both servers; unset means `PASSWORD`."
          },
          "backfill_start_time": {
            "description": "Read mail received on or after this day on the first poll.",
            "format": "date-time",
            "type": "string"
          },
          "display_name": {
            "description": "The From display name of mail sent as this mailbox.",
            "type": "string"
          },
          "enabled": {
            "description": "Poll and send; a disabled mailbox keeps its records.",
            "type": "boolean"
          },
          "imap": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailServer",
            "description": "IMAP, for a connected mailbox."
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailboxKind",
            "description": "Connected or hosted.",
            "x-sylphx-immutable": true
          },
          "oauth_provider": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailboxOauthProvider",
            "description": "The OAuth provider, for `OAUTH`; the environment's Mailbox OAuth App of\nthis provider is the client the grant belongs to. With `imap` or `smtp`\nunset the provider's own servers are used: Google `imap.gmail.com:993`\nand `smtp.gmail.com:465`, Microsoft `outlook.office365.com:993` and\n`smtp.office365.com:587` (STARTTLS)."
          },
          "oauth_refresh_token": {
            "description": "The OAuth refresh token, for `OAUTH`; write-only, sealed at rest like the\npassword, never returned. A connect link sets it without the caller ever\nholding it; a caller that ran its own consent may set it directly, when\nthe token was issued to the environment's Mailbox OAuth App.",
            "type": "string",
            "writeOnly": true,
            "x-sylphx-sensitive": true
          },
          "password": {
            "description": "The login password of both servers; write-only, sealed at rest.",
            "type": "string",
            "writeOnly": true,
            "x-sylphx-sensitive": true
          },
          "smtp": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailServer",
            "description": "SMTP submission, for a connected mailbox."
          }
        },
        "required": [
          "kind",
          "address"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.MailboxStatus": {
        "description": "MailboxStatus is the observed state of a Mailbox.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "last_error": {
            "description": "The last poll's error; empty after a clean poll.",
            "readOnly": true,
            "type": "string"
          },
          "last_poll_time": {
            "description": "When the mailbox was last read.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "oauth_refresh_token_set": {
            "description": "Whether an OAuth refresh token is stored.",
            "readOnly": true,
            "type": "boolean"
          },
          "oauth_scopes": {
            "description": "The scopes the provider granted.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "password_set": {
            "description": "Whether a password is stored.",
            "readOnly": true,
            "type": "boolean"
          },
          "reconnect_required": {
            "description": "The provider refused the refresh token (revoked, expired, or the\naccount's password changed): the mailbox neither polls nor sends until a\nconnect link naming it, or a new `oauth_refresh_token`, reconnects it.",
            "readOnly": true,
            "type": "boolean"
          },
          "sent_folder": {
            "description": "The Sent folder found on the server.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.MarkInboxItemReadRequest": {
        "description": "The request of MarkInboxItemRead.",
        "properties": {
          "name": {
            "description": "The name of the inbox item.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/InboxItem"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.MarkInboxItemUnreadRequest": {
        "description": "The request of MarkInboxItemUnread.",
        "properties": {
          "name": {
            "description": "The name of the inbox item.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/InboxItem"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.Message": {
        "description": "A Message is one notification to one recipient on one topic. Notify admits\nit idempotently, checks suppression and preferences, and fans it out to the\nallowed channels with fallback and digesting; every delivery closes with a\nprovider receipt that only Notify writes.",
        "properties": {
          "broadcast": {
            "description": "The broadcast that created it, if any.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Broadcast"
          },
          "capture": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MessageCapture",
            "description": "A test recipient's rendered content; empty for every other recipient.",
            "readOnly": true
          },
          "channels": {
            "description": "Restrict to these channels, in fallback order; empty uses the recipient's\npreferences.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.Channel"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "content": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MessageContent",
            "description": "Inline content, only with `mailbox`: the subject and bodies as written,\nnot rendered from a template.",
            "x-sylphx-immutable": true
          },
          "data": {
            "additionalProperties": true,
            "description": "Template variables.",
            "type": "object",
            "x-sylphx-immutable": true
          },
          "deliveries": {
            "description": "Per-channel deliveries and their receipts.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.ChannelDelivery"
            },
            "readOnly": true,
            "type": "array"
          },
          "delivery_deadline_time": {
            "description": "Deliver no later than this; a delivery still open then fails with\n`expired`. Unset retries for up to a day. The message record is kept.",
            "format": "date-time",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "email_message_id": {
            "description": "The Message-ID Notify gave the email, without angle brackets.",
            "readOnly": true,
            "type": "string"
          },
          "mailbox": {
            "description": "Send as this mailbox (its address, display name and, for a connected\nmailbox, its own SMTP) instead of a verified Email Domain.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "notify.sylphx.com/Mailbox"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/messages/{message}`.",
            "type": "string"
          },
          "parent_message_id": {
            "description": "In-Reply-To: the Message-ID this answers, without angle brackets.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "recipient": {
            "description": "The recipient.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "notify.sylphx.com/Recipient"
          },
          "references": {
            "description": "The thread's Message-IDs, oldest first, without angle brackets.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "send_time": {
            "description": "Send no earlier than this.",
            "format": "date-time",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MessageState",
            "description": "The admission and delivery state.",
            "readOnly": true
          },
          "state_reason": {
            "description": "Why the message is in its state, for example `recipient_interval` for\n`RATE_LIMITED` or `suppressed` for `SUPPRESSED`.",
            "readOnly": true,
            "type": "string"
          },
          "template": {
            "description": "The template to render; required unless `mailbox` and `content` are set.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "notify.sylphx.com/Template"
          },
          "template_version": {
            "description": "The template version rendered; pinned at admission.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "topic": {
            "description": "The topic preferences are checked against, for example `billing`.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "uid": {
            "description": "`msg_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "recipient",
          "topic"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.MessageCapture": {
        "description": "What a message to a test recipient rendered to.",
        "properties": {
          "html_body": {
            "description": "The HTML body.",
            "readOnly": true,
            "type": "string"
          },
          "links": {
            "description": "Every link in the bodies, in order.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "subject": {
            "description": "The email subject.",
            "readOnly": true,
            "type": "string"
          },
          "text_body": {
            "description": "The plain-text body.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.MessageContent": {
        "description": "Inline content of a Message sent as a mailbox.",
        "properties": {
          "html_body": {
            "description": "The HTML body.",
            "type": "string"
          },
          "subject": {
            "description": "The subject.",
            "type": "string"
          },
          "text_body": {
            "description": "The plain-text body.",
            "type": "string"
          }
        },
        "required": [
          "subject"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.MessageState": {
        "description": "The state of a Message.",
        "enum": [
          "accepted",
          "suppressed",
          "delivering",
          "delivered",
          "failed",
          "cancelled",
          "rate_limited"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.Preference": {
        "description": "A Preference is a recipient's choice for one topic: which channels may carry\nit. Admission honors it, and unsubscribe links write it. The id is the\ntopic.",
        "properties": {
          "channels": {
            "description": "Channels the topic may use; empty mutes the topic.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.Channel"
            },
            "type": "array"
          },
          "digest_interval": {
            "description": "Batch this topic into a digest at most this often; unset sends each\nmessage.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}/preferences/{preference}`.",
            "type": "string"
          },
          "uid": {
            "description": "`prf_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.PushContent": {
        "description": "Push content.",
        "properties": {
          "body": {
            "description": "The body.",
            "type": "string"
          },
          "data": {
            "additionalProperties": true,
            "description": "Data delivered with the notification.",
            "type": "object"
          },
          "title": {
            "description": "The title.",
            "type": "string"
          }
        },
        "required": [
          "title"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.PushDevice": {
        "description": "A push device of a recipient.",
        "properties": {
          "device_token": {
            "description": "The device token; write-only.",
            "type": "string",
            "writeOnly": true,
            "x-sylphx-sensitive": true
          },
          "platform": {
            "$ref": "#/components/schemas/sylphx.notify.v1.PushPlatform",
            "description": "The platform."
          },
          "sender": {
            "description": "The push Sender the token belongs to.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Sender"
          },
          "token_last4": {
            "description": "The last four characters of the token, for display.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "platform",
          "device_token",
          "sender"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.PushPlatform": {
        "description": "A push platform.",
        "enum": [
          "apns",
          "fcm",
          "web_push"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.PushSender": {
        "description": "A push app.",
        "properties": {
          "app_key": {
            "description": "The bundle id, package name, or web origin.",
            "type": "string"
          },
          "connection": {
            "description": "The Connection holding the APNs, FCM, or VAPID credentials.",
            "type": "string"
          },
          "platform": {
            "$ref": "#/components/schemas/sylphx.notify.v1.PushPlatform",
            "description": "The push platform."
          }
        },
        "required": [
          "platform",
          "connection",
          "app_key"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.Recipient": {
        "description": "A Recipient is one of a customer's users, across channels: email addresses,\nphone numbers, and device tokens. Dead device tokens are pruned from\nprovider feedback.",
        "properties": {
          "devices": {
            "description": "Push devices.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.PushDevice"
            },
            "type": "array"
          },
          "email_addresses": {
            "description": "Email addresses, first is preferred.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "external_key": {
            "description": "The customer's own id for this user, for example an Auth end user name.",
            "type": "string"
          },
          "language_code": {
            "description": "BCP 47 language for templates; default the environment's.",
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}`.",
            "type": "string"
          },
          "phone_numbers": {
            "description": "E.164 phone numbers, first is preferred.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "test": {
            "description": "A test recipient: its messages are rendered and captured on the Message,\nnever delivered. An email address whose local part carries\n`+sylphx_test` is a test address whatever this says.",
            "type": "boolean"
          },
          "time_zone": {
            "description": "IANA time zone for quiet hours and digests.",
            "type": "string"
          },
          "uid": {
            "description": "`rcp_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.Route": {
        "description": "A Route sends the mail a receiving Email Domain accepts for one address, a\npattern of addresses, or every other address to actions: deliver to\nmailboxes, forward, or reject. Every accepted message also publishes\n`sylphx.notify.inbound_email.received`.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/mail_domains/{mail_domain}/mail_routes/{mail_route}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.notify.v1.RouteSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.notify.v1.RouteStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`rte_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.RouteAction": {
        "description": "One thing a Route does with mail; exactly one.",
        "properties": {
          "forward": {
            "description": "Forward to an address.",
            "type": "string"
          },
          "mailbox": {
            "description": "Deliver to a mailbox of the environment.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Mailbox"
          },
          "reject": {
            "description": "Refuse at the recipient step with this message; stands alone.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.RouteMatch": {
        "description": "Which recipients a Route matches; exactly one.",
        "properties": {
          "address": {
            "description": "A local part, for example `support`. A local part with a `+tag` also\nmatches its route.",
            "type": "string"
          },
          "catch_all": {
            "description": "Every local part no other route matches.",
            "type": "boolean"
          },
          "pattern": {
            "description": "A glob on the local part, for example `billing-*`.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.RouteSpamPolicy": {
        "description": "What happens to mail judged spam on a Route.",
        "enum": [
          "deliver",
          "drop",
          "reject"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.RouteSpec": {
        "description": "RouteSpec is the caller-writable state of a Route.",
        "properties": {
          "actions": {
            "description": "What happens to the mail: one or more mailbox and forward actions, or one\nreject.",
            "items": {
              "$ref": "#/components/schemas/sylphx.notify.v1.RouteAction"
            },
            "type": "array"
          },
          "enabled": {
            "description": "A disabled route matches nothing.",
            "type": "boolean"
          },
          "match": {
            "$ref": "#/components/schemas/sylphx.notify.v1.RouteMatch",
            "description": "Which recipients the route matches."
          },
          "spam": {
            "$ref": "#/components/schemas/sylphx.notify.v1.RouteSpamPolicy",
            "description": "What happens to mail the spam filter judges spam; `DELIVER` when unset."
          }
        },
        "required": [
          "match",
          "actions"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.RouteStatus": {
        "description": "RouteStatus is the observed state of a Route.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.SendBroadcastRequest": {
        "description": "The request of SendBroadcast.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the broadcast.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Broadcast"
          },
          "validate_only": {
            "description": "Validate without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.SendLimit": {
        "description": "A per-recipient send limit. A message over it is recorded with state\n`RATE_LIMITED` and its create answers 429 `RATE_LIMITED` with the wait.",
        "properties": {
          "max_per_hour": {
            "description": "At most this many messages to one recipient in any hour; 0 is no limit.",
            "format": "int32",
            "type": "integer"
          },
          "min_interval": {
            "description": "At least this long between two messages to one recipient.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.Sender": {
        "description": "A Sender is a verified origin for SMS or push: a registered number or sender\nid, or a push app whose APNs/FCM credentials are a Connection reached\nthrough the credential service. It is used only once verified.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/senders/{sender}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.notify.v1.SenderSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.notify.v1.SenderStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`snd_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.SenderSpec": {
        "description": "SenderSpec is the caller-writable state of a Sender.",
        "properties": {
          "push": {
            "$ref": "#/components/schemas/sylphx.notify.v1.PushSender",
            "description": "A mobile or web push app."
          },
          "sms": {
            "$ref": "#/components/schemas/sylphx.notify.v1.SmsSender",
            "description": "An SMS number or alphanumeric sender id."
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.SenderStatus": {
        "description": "SenderStatus is the observed state of a Sender.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "verification_note": {
            "description": "Why the sender is not verified, when it is not.",
            "readOnly": true,
            "type": "string"
          },
          "verified": {
            "description": "Whether the sender is registered and usable.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.SmsContent": {
        "description": "SMS content.",
        "properties": {
          "body": {
            "description": "The body.",
            "type": "string"
          },
          "sender": {
            "description": "The SMS Sender.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Sender"
          }
        },
        "required": [
          "sender",
          "body"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.SmsSender": {
        "description": "An SMS origin.",
        "properties": {
          "phone_number": {
            "description": "An E.164 number.",
            "type": "string"
          },
          "region_codes": {
            "description": "CLDR region codes the origin is registered for.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sender_key": {
            "description": "An alphanumeric sender id, where the region allows one.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.Suppression": {
        "description": "A Suppression stops delivery to one address on one channel. Bounces,\ncomplaints, carrier opt-outs, uninstalled devices, and unsubscribes write\nit; admission checks it before accepting a message.",
        "properties": {
          "address": {
            "description": "The suppressed address, number, or device token.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "channel": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Channel",
            "description": "The channel.",
            "x-sylphx-immutable": true
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/suppressions/{suppression}`.",
            "type": "string"
          },
          "reason": {
            "$ref": "#/components/schemas/sylphx.notify.v1.SuppressionReason",
            "description": "Why.",
            "x-sylphx-immutable": true
          },
          "source_message": {
            "description": "The message whose feedback wrote it.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Message"
          },
          "topic": {
            "description": "Limit the suppression to one topic; unset suppresses every topic.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "uid": {
            "description": "`sup_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "channel",
          "address",
          "reason"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.SuppressionReason": {
        "description": "Why an address is suppressed.",
        "enum": [
          "bounce",
          "complaint",
          "carrier_opt_out",
          "unsubscribe",
          "uninstalled",
          "manual"
        ],
        "type": "string"
      },
      "sylphx.notify.v1.Template": {
        "description": "A Template is versioned content per channel. Every spec change is a new\nversion; a message renders from the version it pinned at admission.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/templates/{template}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.notify.v1.TemplateSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.notify.v1.TemplateStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`tpl_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.TemplateSpec": {
        "description": "TemplateSpec is the caller-writable state of a Template.",
        "properties": {
          "email": {
            "$ref": "#/components/schemas/sylphx.notify.v1.EmailContent",
            "description": "Email content."
          },
          "inbox": {
            "$ref": "#/components/schemas/sylphx.notify.v1.InboxContent",
            "description": "In-app inbox content."
          },
          "push": {
            "$ref": "#/components/schemas/sylphx.notify.v1.PushContent",
            "description": "Push content."
          },
          "send_limit": {
            "$ref": "#/components/schemas/sylphx.notify.v1.SendLimit",
            "description": "A per-recipient send limit on messages rendered from this template;\nunset admits every message."
          },
          "sms": {
            "$ref": "#/components/schemas/sylphx.notify.v1.SmsContent",
            "description": "SMS content."
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.TemplateStatus": {
        "description": "TemplateStatus is the observed state of a Template.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "version": {
            "description": "The version the current spec is; messages pin it.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.notify.v1.UpdateBroadcastRequest": {
        "description": "The request of UpdateBroadcast.",
        "properties": {
          "allow_missing": {
            "description": "Create the broadcast when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "broadcast": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Broadcast",
            "description": "The broadcast to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "broadcast"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.UpdateEmailDomainRequest": {
        "description": "The request of UpdateEmailDomain.",
        "properties": {
          "allow_missing": {
            "description": "Create the email domain when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "email_domain": {
            "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomain",
            "description": "The email domain to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "email_domain"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.UpdateMailboxOauthAppRequest": {
        "description": "The request of UpdateMailboxOauthApp.",
        "properties": {
          "allow_missing": {
            "description": "Create the mailbox OAuth app when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "mailbox_oauth_app": {
            "$ref": "#/components/schemas/sylphx.notify.v1.MailboxOauthApp",
            "description": "The mailbox OAuth app to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "mailbox_oauth_app"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.UpdateMailboxRequest": {
        "description": "The request of UpdateMailbox.",
        "properties": {
          "allow_missing": {
            "description": "Create the mailbox when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "mailbox": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Mailbox",
            "description": "The mailbox to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "mailbox"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.UpdatePreferenceRequest": {
        "description": "The request of UpdatePreference.",
        "properties": {
          "allow_missing": {
            "description": "Create the preference when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "preference": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Preference",
            "description": "The preference to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "preference"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.UpdateRecipientRequest": {
        "description": "The request of UpdateRecipient.",
        "properties": {
          "allow_missing": {
            "description": "Create the recipient when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "recipient": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Recipient",
            "description": "The recipient to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "recipient"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.UpdateRouteRequest": {
        "description": "The request of UpdateRoute.",
        "properties": {
          "allow_missing": {
            "description": "Create the route when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "route": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Route",
            "description": "The route to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "route"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.UpdateSenderRequest": {
        "description": "The request of UpdateSender.",
        "properties": {
          "allow_missing": {
            "description": "Create the sender when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "sender": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Sender",
            "description": "The sender to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "sender"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.UpdateTemplateRequest": {
        "description": "The request of UpdateTemplate.",
        "properties": {
          "allow_missing": {
            "description": "Create the template when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "template": {
            "$ref": "#/components/schemas/sylphx.notify.v1.Template",
            "description": "The template to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "template"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.VerifyEmailDomainRequest": {
        "description": "The request of VerifyEmailDomain.",
        "properties": {
          "name": {
            "description": "The name of the email domain.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/EmailDomain"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.notify.v1.VerifySenderRequest": {
        "description": "The request of VerifySender.",
        "properties": {
          "name": {
            "description": "The name of the sender.",
            "type": "string",
            "x-sylphx-resource-reference": "notify.sylphx.com/Sender"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.AcknowledgeErrorGroupRequest": {
        "description": "The request of AcknowledgeErrorGroup.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the error group.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/ErrorGroup"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.Breadcrumb": {
        "description": "A breadcrumb before an error.",
        "properties": {
          "category": {
            "description": "A category, for example `http` or `navigation`.",
            "type": "string"
          },
          "event_time": {
            "description": "When it happened.",
            "format": "date-time",
            "type": "string"
          },
          "message": {
            "description": "The message.",
            "type": "string"
          },
          "severity": {
            "$ref": "#/components/schemas/sylphx.observability.v1.LogSeverity",
            "description": "The severity."
          }
        },
        "required": [
          "event_time"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.CaptureErrorRequest": {
        "description": "The request of CaptureError.",
        "properties": {
          "error_event": {
            "$ref": "#/components/schemas/sylphx.observability.v1.ErrorEvent",
            "description": "The occurrence; only record fields are read."
          },
          "parent": {
            "description": "The parent the method acts in.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/ErrorGroup"
          }
        },
        "required": [
          "parent",
          "error_event"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.CaptureErrorResponse": {
        "description": "The response of CaptureError.",
        "properties": {
          "error_event": {
            "$ref": "#/components/schemas/sylphx.observability.v1.ErrorEvent",
            "description": "The stored occurrence."
          },
          "sample_rate": {
            "description": "Keep this fraction of later occurrences, 0 to 1; 1 when no pressure.",
            "type": "number"
          }
        },
        "type": "object"
      },
      "sylphx.observability.v1.CreateSourceMapRequest": {
        "description": "The request of CreateSourceMap.",
        "properties": {
          "parent": {
            "description": "The parent to upload in.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/SourceMap"
          },
          "source_map": {
            "$ref": "#/components/schemas/sylphx.observability.v1.SourceMap",
            "description": "The source map to upload."
          }
        },
        "required": [
          "parent",
          "source_map"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.ErrorEvent": {
        "description": "An Error Event is one immutable error occurrence, with breadcrumbs and\ncorrelation.",
        "properties": {
          "breadcrumbs": {
            "description": "Breadcrumbs before the error, oldest first, at most 100.",
            "items": {
              "$ref": "#/components/schemas/sylphx.observability.v1.Breadcrumb"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "event_time": {
            "description": "When it happened.",
            "format": "date-time",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "exception_type": {
            "description": "The exception type.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "fingerprint": {
            "description": "Override the grouping fingerprint.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "message": {
            "description": "The exception message.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/error_groups/{error_group}/error_events/{error_event}`.",
            "type": "string"
          },
          "release": {
            "description": "The release the emitter ran.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "service_name": {
            "description": "The emitting service.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "span_id": {
            "description": "W3C span id (16 hex).",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "stack": {
            "description": "The stack as the runtime printed it (JavaScript `Error.stack`), at most\n64 KiB. When `stack_frames` is empty, V8 (`at fn (file:line:col)`) and\nGecko/WebKit (`fn@file:line:col`) lines are parsed into `stack_frames`,\ninnermost last; when `stack_frames` is set, it wins and `stack` is kept\nas sent. Either way the frames are then mapped through the source maps\nuploaded for `release` before grouping. Scrubbed before storage.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "stack_frames": {
            "description": "Stack frames, innermost last.",
            "items": {
              "$ref": "#/components/schemas/sylphx.observability.v1.StackFrame"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Typed tags, at most 64.",
            "type": "object",
            "x-sylphx-immutable": true
          },
          "trace_id": {
            "description": "W3C trace id (32 hex).",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "uid": {
            "description": "`err_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "event_time",
          "exception_type"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.ErrorGroup": {
        "description": "An Error Group is the deterministic grouping of error occurrences by\nfingerprint. Acknowledge, resolve, and reopen require the current etag;\noccurrences are immutable.",
        "properties": {
          "culprit": {
            "description": "The top in-app frame.",
            "readOnly": true,
            "type": "string"
          },
          "fingerprint": {
            "description": "The grouping fingerprint.",
            "readOnly": true,
            "type": "string"
          },
          "first_seen_time": {
            "description": "The first occurrence.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "last_release": {
            "description": "The release of the latest occurrence. Release is an attribute of each\noccurrence, never part of the group key: one bug stays one group across\nreleases.",
            "readOnly": true,
            "type": "string"
          },
          "last_seen_time": {
            "description": "The latest occurrence.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/error_groups/{error_group}`.",
            "type": "string"
          },
          "occurrence_count": {
            "description": "Occurrences, all time.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "service_name": {
            "description": "The emitting service.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.observability.v1.ErrorGroupState",
            "description": "The triage state.",
            "readOnly": true
          },
          "title": {
            "description": "The exception type and message of the first occurrence.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`erg_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.observability.v1.ErrorGroupState": {
        "description": "The triage state of an error group.",
        "enum": [
          "unresolved",
          "acknowledged",
          "resolved"
        ],
        "type": "string"
      },
      "sylphx.observability.v1.Generation": {
        "description": "A Generation is one Sylphx AI inference call of a project environment\n(Responses, Messages, Chat Completions, embeddings, images, audio), read\nfrom the OpenTelemetry GenAI span the AI gateway emits for it\n(services/ai/docs/telemetry.md). It is a view over the environment's\ntraces, so it has no store of its own and expires with them. It never\nnames how the call was served: no route, account or vendor endpoint, and\nno cost other than the price the caller was charged. Prompts and outputs\nare not here. The id is the span id.",
        "properties": {
          "api_key": {
            "description": "The key that made the call, as a resource name.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "access.sylphx.com/ApiKey"
          },
          "api_surface": {
            "description": "The wire the call used: `responses`, `messages`, `chat_completions`,\n`embeddings`, `images`, `audio` or `realtime_transcription`.",
            "readOnly": true,
            "type": "string"
          },
          "cache_read_input_tokens": {
            "description": "Input tokens read from the prompt cache.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "cache_write_input_tokens": {
            "description": "Input tokens written to the prompt cache.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "data_policy": {
            "description": "The data policy the call ran under: `standard`, `zdr` or `training`.",
            "readOnly": true,
            "type": "string"
          },
          "end_time": {
            "description": "When the last byte of the answer was sent.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "end_user": {
            "description": "The caller's own end-user id (`user` or `safety_identifier`), as sent.",
            "readOnly": true,
            "type": "string"
          },
          "error_type": {
            "description": "`error.type` when the call failed: the public error code, for example\n`rate_limited`.",
            "readOnly": true,
            "type": "string"
          },
          "finish_reasons": {
            "description": "`gen_ai.response.finish_reasons`, for example `stop` or `length`.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "input_tokens": {
            "description": "Input tokens, cached ones included.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/generations/{generation}`.",
            "type": "string"
          },
          "operation": {
            "description": "`gen_ai.operation.name`, for example `chat`, `embeddings` or\n`generate_content`.",
            "readOnly": true,
            "type": "string"
          },
          "outcome": {
            "$ref": "#/components/schemas/sylphx.observability.v1.GenerationOutcome",
            "description": "How the call ended.",
            "readOnly": true
          },
          "output_tokens": {
            "description": "Output tokens, reasoning ones included.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "price_usd": {
            "description": "What the call was charged in USD, as a decimal string, for example\n`0.000420`; the same value as the response's `usage.sylphx.price`.",
            "readOnly": true,
            "type": "string"
          },
          "reasoning_output_tokens": {
            "description": "Output tokens spent on reasoning.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "request_model": {
            "description": "The catalogue model id the caller named, for example\n`anthropic/claude-sonnet-5.5`.",
            "readOnly": true,
            "type": "string"
          },
          "response_id": {
            "description": "The response id (`resp_...`, `msg_...` or `chatcmpl-...`).",
            "readOnly": true,
            "type": "string"
          },
          "response_model": {
            "description": "The catalogue model id that answered.",
            "readOnly": true,
            "type": "string"
          },
          "span_id": {
            "description": "The W3C span id (16 hex) of the gateway's span.",
            "readOnly": true,
            "type": "string"
          },
          "start_time": {
            "description": "When the gateway received the call.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "streamed": {
            "description": "Whether the answer was streamed.",
            "readOnly": true,
            "type": "boolean"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The caller's tags (`Sylphx-Tags` and the request's `metadata`), at most\n64; filter as `tags.<key> = \"value\"`.",
            "readOnly": true,
            "type": "object"
          },
          "time_to_first_chunk": {
            "description": "From receipt to the first output chunk; unset when nothing streamed.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "readOnly": true,
            "type": "string"
          },
          "trace_id": {
            "description": "The W3C trace id (32 hex); the caller's own when it sent `traceparent`.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`gen_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.observability.v1.GenerationOutcome": {
        "description": "GenerationOutcome is how a Generation ended.",
        "enum": [
          "succeeded",
          "failed",
          "cancelled"
        ],
        "type": "string"
      },
      "sylphx.observability.v1.GetErrorEventRequest": {
        "description": "The request of GetErrorEvent.",
        "properties": {
          "name": {
            "description": "The name of the error event to get.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/ErrorEvent"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.GetErrorGroupRequest": {
        "description": "The request of GetErrorGroup.",
        "properties": {
          "name": {
            "description": "The name of the error group to get.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/ErrorGroup"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.GetGenerationRequest": {
        "description": "The request of GetGeneration.",
        "properties": {
          "name": {
            "description": "The name of the generation to get.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/Generation"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.GetLogEntryRequest": {
        "description": "The request of GetLogEntry.",
        "properties": {
          "name": {
            "description": "The name of the log entry to get.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/LogEntry"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.GetScrubbingPolicyRequest": {
        "description": "The request of GetScrubbingPolicy.",
        "properties": {
          "name": {
            "description": "The name of the scrubbing policy to get.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/ScrubbingPolicy"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.GetSourceMapRequest": {
        "description": "The request of GetSourceMap.",
        "properties": {
          "name": {
            "description": "The name of the source map to get.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/SourceMap"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.GetTraceRequest": {
        "description": "The request of GetTrace.",
        "properties": {
          "name": {
            "description": "The name of the trace to get.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/Trace"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.ListErrorEventsRequest": {
        "description": "The request of ListErrorEvents.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/ErrorEvent"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.ListErrorEventsResponse": {
        "description": "The response of ListErrorEvents.",
        "properties": {
          "error_events": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.observability.v1.ErrorEvent"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.observability.v1.ListErrorGroupsRequest": {
        "description": "The request of ListErrorGroups.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/ErrorGroup"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.ListErrorGroupsResponse": {
        "description": "The response of ListErrorGroups.",
        "properties": {
          "error_groups": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.observability.v1.ErrorGroup"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.observability.v1.ListGenerationsRequest": {
        "description": "The request of ListGenerations.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields and `tags.<key>`.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields; default `start_time desc`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/Generation"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.ListGenerationsResponse": {
        "description": "The response of ListGenerations.",
        "properties": {
          "generations": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.observability.v1.Generation"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.observability.v1.ListSourceMapsRequest": {
        "description": "The request of ListSourceMaps.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter; `release = \"…\"` only.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many, up to 100.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "The `next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/SourceMap"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.ListSourceMapsResponse": {
        "description": "The response of ListSourceMaps.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last.",
            "type": "string"
          },
          "source_maps": {
            "description": "The source maps, newest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.observability.v1.SourceMap"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.observability.v1.LogEntry": {
        "description": "A Log Entry is one typed, bounded log record of a project environment,\ncorrelated to a trace. Entries are immutable; ingest is idempotent per\nbatch.",
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Typed attributes, at most 64.",
            "type": "object",
            "x-sylphx-immutable": true
          },
          "body": {
            "description": "The message.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "log_time": {
            "description": "When the event happened.",
            "format": "date-time",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/log_entries/{log_entry}`.",
            "type": "string"
          },
          "service_name": {
            "description": "The emitting service, for example `checkout-api`.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "severity": {
            "$ref": "#/components/schemas/sylphx.observability.v1.LogSeverity",
            "description": "The severity.",
            "x-sylphx-immutable": true
          },
          "span_id": {
            "description": "W3C span id (16 hex).",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "trace_id": {
            "description": "W3C trace id (32 hex).",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "uid": {
            "description": "`log_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "log_time",
          "severity",
          "body"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.LogSeverity": {
        "description": "OpenTelemetry-aligned severity.",
        "enum": [
          "trace",
          "debug",
          "info",
          "warn",
          "error",
          "fatal"
        ],
        "type": "string"
      },
      "sylphx.observability.v1.QueryLogEntriesRequest": {
        "description": "The request of QueryLogEntries.",
        "properties": {
          "end_time": {
            "description": "The interval end; default now.",
            "format": "date-time",
            "type": "string"
          },
          "filter": {
            "description": "AIP-160 filter over the typed, allowlisted fields.",
            "type": "string"
          },
          "order_by": {
            "description": "`time desc` (default) or `time asc`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 100, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page; bound to tenant, interval, filter,\nand order.",
            "type": "string"
          },
          "parent": {
            "description": "The parent the method acts in.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/LogEntry"
          },
          "start_time": {
            "description": "The interval start; required, at most 31 days before `end_time`.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "start_time"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.QueryLogEntriesResponse": {
        "description": "The response of QueryLogEntries.",
        "properties": {
          "log_entries": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.observability.v1.LogEntry"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.observability.v1.QueryTracesRequest": {
        "description": "The request of QueryTraces.",
        "properties": {
          "end_time": {
            "description": "The interval end; default now.",
            "format": "date-time",
            "type": "string"
          },
          "filter": {
            "description": "AIP-160 filter over the typed, allowlisted fields.",
            "type": "string"
          },
          "order_by": {
            "description": "`time desc` (default) or `time asc`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 100, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page; bound to tenant, interval, filter,\nand order.",
            "type": "string"
          },
          "parent": {
            "description": "The parent the method acts in.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/Trace"
          },
          "start_time": {
            "description": "The interval start; required, at most 31 days before `end_time`.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "start_time"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.QueryTracesResponse": {
        "description": "The response of QueryTraces.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "traces": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.observability.v1.Trace"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.observability.v1.ReopenErrorGroupRequest": {
        "description": "The request of ReopenErrorGroup.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the error group.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/ErrorGroup"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.ResolveErrorGroupRequest": {
        "description": "The request of ResolveErrorGroup.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the error group.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/ErrorGroup"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.ScrubbingPolicy": {
        "description": "The Scrubbing Policy of a project environment: what is removed from every\ncaptured error before it is stored. The default rules always apply: fields\nnamed like a password, secret, token, key, cookie, session, authorization,\nor card are replaced with `[Filtered]`, and card numbers, bearer tokens,\nJWTs, and Sylphx secret keys are replaced wherever they appear. Email\naddresses are replaced unless `keep_emails` is set. The environment's\npolicy adds to the defaults; it cannot remove them.",
        "properties": {
          "denied_fields": {
            "description": "More field names to replace with `[Filtered]` wherever they appear in\ntags, extra data, request data, or breadcrumb data (case-insensitive,\nmatched as a substring), at most 64.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "keep_emails": {
            "description": "Keep email addresses instead of replacing them with `[email]`.",
            "type": "boolean"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata; `meta.etag` fences updates."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/scrubbing_policies/default`.",
            "type": "string"
          },
          "uid": {
            "description": "`scp_<env>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.observability.v1.SourceMap": {
        "description": "A Source Map is one uploaded JavaScript source map of one release of a\nproject environment. Captured stack frames of that release whose file\nmatches `file_url` are mapped back to the original source before grouping.\nUploading the same release and file again replaces the map.",
        "properties": {
          "content": {
            "description": "The source map JSON (revision 3), at most 16 MiB. Written, never read\nback.",
            "type": "string",
            "writeOnly": true
          },
          "content_sha256": {
            "description": "SHA-256 of `content`, hex.",
            "readOnly": true,
            "type": "string"
          },
          "file_url": {
            "description": "The minified file the map describes: its URL\n(`https://app.example.com/assets/index-3f2a.js`) or its path\n(`/assets/index-3f2a.js`). A frame matches on the URL path.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/source_maps/{source_map}`.",
            "type": "string"
          },
          "release": {
            "description": "The release the map belongs to, as sent in `ErrorEvent.release`.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "size_bytes": {
            "description": "Size of `content` in bytes.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`smp_<digest>`; the same release and file always have the same id.",
            "readOnly": true,
            "type": "string"
          },
          "upload_time": {
            "description": "When the map was uploaded.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "release",
          "file_url",
          "content"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.Span": {
        "description": "One span of a trace.",
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Typed attributes, at most 64.",
            "type": "object"
          },
          "end_time": {
            "description": "When the span ended; not before `start_time`.",
            "format": "date-time",
            "type": "string"
          },
          "error": {
            "description": "Whether the span failed.",
            "type": "boolean"
          },
          "error_message": {
            "description": "The error message, when `error`.",
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.observability.v1.SpanKind",
            "description": "The span kind."
          },
          "parent_span_id": {
            "description": "The parent span id; empty for a root span.",
            "type": "string"
          },
          "service_name": {
            "description": "The emitting service.",
            "type": "string"
          },
          "span_id": {
            "description": "W3C span id (16 hex).",
            "type": "string"
          },
          "span_name": {
            "description": "The operation name.",
            "type": "string"
          },
          "start_time": {
            "description": "When the span started.",
            "format": "date-time",
            "type": "string"
          },
          "trace_id": {
            "description": "W3C trace id (32 hex).",
            "type": "string"
          }
        },
        "required": [
          "trace_id",
          "span_id",
          "span_name",
          "service_name",
          "start_time",
          "end_time"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.SpanKind": {
        "description": "OpenTelemetry span kind.",
        "enum": [
          "internal",
          "server",
          "client",
          "producer",
          "consumer"
        ],
        "type": "string"
      },
      "sylphx.observability.v1.StackFrame": {
        "description": "One stack frame.",
        "properties": {
          "app_frame": {
            "description": "Whether the frame is the customer's own code.",
            "type": "boolean"
          },
          "column": {
            "description": "The column, from 1.",
            "format": "int32",
            "type": "integer"
          },
          "file_path": {
            "description": "The file or module.",
            "type": "string"
          },
          "function_name": {
            "description": "The function.",
            "type": "string"
          },
          "line": {
            "description": "The line, from 1.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.observability.v1.Trace": {
        "description": "A Trace is every span sharing one W3C trace id in a project environment. The\nid is `t` followed by the 32-hex trace id.",
        "properties": {
          "end_time": {
            "description": "The latest span end.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "has_error": {
            "description": "Whether any span has an error status.",
            "readOnly": true,
            "type": "boolean"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/traces/{trace}`.",
            "type": "string"
          },
          "root_service_name": {
            "description": "The root span's service.",
            "readOnly": true,
            "type": "string"
          },
          "root_span_name": {
            "description": "The root span's name.",
            "readOnly": true,
            "type": "string"
          },
          "spans": {
            "description": "Every span, in start order; empty in query results.",
            "items": {
              "$ref": "#/components/schemas/sylphx.observability.v1.Span"
            },
            "readOnly": true,
            "type": "array"
          },
          "start_time": {
            "description": "The earliest span start.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "trace_id": {
            "description": "The W3C trace id (32 hex).",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`trc_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.observability.v1.UpdateScrubbingPolicyRequest": {
        "description": "The request of UpdateScrubbingPolicy.",
        "properties": {
          "scrubbing_policy": {
            "$ref": "#/components/schemas/sylphx.observability.v1.ScrubbingPolicy",
            "description": "The scrubbing policy to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          }
        },
        "required": [
          "scrubbing_policy"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.WriteLogEntriesRequest": {
        "description": "The request of WriteLogEntries.",
        "properties": {
          "log_entries": {
            "description": "The entries, at most 1000; only record fields are read.",
            "items": {
              "$ref": "#/components/schemas/sylphx.observability.v1.LogEntry"
            },
            "type": "array"
          },
          "parent": {
            "description": "The parent the method acts in.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/LogEntry"
          }
        },
        "required": [
          "parent",
          "log_entries"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.WriteLogEntriesResponse": {
        "description": "The response of WriteLogEntries.",
        "properties": {
          "admitted_count": {
            "description": "Entries admitted.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.observability.v1.WriteSpansRequest": {
        "description": "The request of WriteSpans.",
        "properties": {
          "parent": {
            "description": "The parent the method acts in.",
            "type": "string",
            "x-sylphx-resource-reference": "observability.sylphx.com/Trace"
          },
          "spans": {
            "description": "The spans, at most 1000.",
            "items": {
              "$ref": "#/components/schemas/sylphx.observability.v1.Span"
            },
            "type": "array"
          }
        },
        "required": [
          "parent",
          "spans"
        ],
        "type": "object"
      },
      "sylphx.observability.v1.WriteSpansResponse": {
        "description": "The response of WriteSpans.",
        "properties": {
          "admitted_count": {
            "description": "Spans admitted.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.realtime.v1.BindSubscriptionRequest": {
        "description": "The request of BindSubscription.",
        "properties": {
          "channel": {
            "description": "The channel its events are published to, `namespace:name`.",
            "type": "string"
          },
          "subscription": {
            "description": "The Events Subscription's resource name.",
            "type": "string"
          }
        },
        "required": [
          "subscription",
          "channel"
        ],
        "type": "object"
      },
      "sylphx.realtime.v1.BindSubscriptionResponse": {
        "description": "The response of BindSubscription.",
        "properties": {
          "channel": {
            "description": "The channel it feeds.",
            "type": "string"
          },
          "subscription": {
            "description": "The Subscription bound.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.realtime.v1.Capability": {
        "description": "Capability is one thing a token lets its holder do on a channel pattern.",
        "enum": [
          "subscribe",
          "publish",
          "presence"
        ],
        "type": "string"
      },
      "sylphx.realtime.v1.ChannelGrant": {
        "description": "ChannelGrant is the capabilities a token grants on one channel pattern.",
        "properties": {
          "capabilities": {
            "description": "The capabilities granted. At least one.",
            "items": {
              "$ref": "#/components/schemas/sylphx.realtime.v1.Capability"
            },
            "type": "array"
          },
          "pattern": {
            "description": "A channel name or pattern: `room:42`, or `room:*` for every channel of the\nnamespace. `*` is allowed only as the whole name part, and never in the\nnamespace part.",
            "type": "string"
          }
        },
        "required": [
          "pattern",
          "capabilities"
        ],
        "type": "object"
      },
      "sylphx.realtime.v1.DeleteNamespaceRequest": {
        "description": "The request of DeleteNamespace.",
        "properties": {
          "name": {
            "description": "The namespace name.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.realtime.v1.DeleteNamespaceResponse": {
        "description": "The response of DeleteNamespace.",
        "properties": {},
        "type": "object"
      },
      "sylphx.realtime.v1.GetNamespaceRequest": {
        "description": "The request of GetNamespace.",
        "properties": {
          "name": {
            "description": "The namespace name.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.realtime.v1.HistoryPreset": {
        "description": "HistoryPreset is how much of a channel's past a namespace keeps. Longer\nretention is not a realtime feature: route the channel's messages to an\nEvents topic.",
        "enum": [
          "none",
          "short",
          "standard"
        ],
        "type": "string"
      },
      "sylphx.realtime.v1.IssueTokenRequest": {
        "description": "The request of IssueToken.",
        "properties": {
          "grants": {
            "description": "The channels and capabilities to grant. A channel token takes exactly one\ngrant whose pattern has no `*`. At most 64 grants.",
            "items": {
              "$ref": "#/components/schemas/sylphx.realtime.v1.ChannelGrant"
            },
            "type": "array"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.realtime.v1.TokenKind",
            "description": "Which kind of token to mint."
          },
          "ttl": {
            "description": "How long the token lives; 1 minute to 24 hours, default 1 hour.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "user": {
            "description": "The end user's id. Required for a connection token.",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "grants"
        ],
        "type": "object"
      },
      "sylphx.realtime.v1.IssueTokenResponse": {
        "description": "The response of IssueToken.",
        "properties": {
          "claims": {
            "$ref": "#/components/schemas/sylphx.realtime.v1.TokenClaims",
            "description": "The claims the service put in it, for the caller to log or check."
          },
          "connect_uri": {
            "description": "The realtime host the client connects to. Never hard-code it: it can\nchange, with no port, and the protocol-v1 paths are fixed.",
            "type": "string"
          },
          "expire_time": {
            "description": "When it expires.",
            "format": "date-time",
            "type": "string"
          },
          "refresh_time": {
            "description": "The earliest the client should ask for a replacement: the in-band\n`refresh_required` frame arrives at this time.",
            "format": "date-time",
            "type": "string"
          },
          "token": {
            "description": "The token. Opaque; sent in the `connect` frame or the `Authorization`\nheader, never in a URL.",
            "type": "string",
            "x-sylphx-sensitive": true
          }
        },
        "type": "object"
      },
      "sylphx.realtime.v1.ListMessagesRequest": {
        "description": "The request of ListMessages.",
        "properties": {
          "channel": {
            "description": "The channel, `namespace:name`.",
            "type": "string"
          },
          "cursor": {
            "description": "Return messages after this cursor. Empty starts at the oldest kept\nmessage.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many messages; default 100, at most 1,000.",
            "format": "int32",
            "type": "integer"
          },
          "wait_seconds": {
            "description": "When no message is after the cursor, wait up to this many seconds for\none; 0 to 30, default 0 (answer at once).",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "channel"
        ],
        "type": "object"
      },
      "sylphx.realtime.v1.ListMessagesResponse": {
        "description": "The response of ListMessages.",
        "properties": {
          "messages": {
            "description": "The messages, oldest first. Empty when the wait ran out.",
            "items": {
              "$ref": "#/components/schemas/sylphx.realtime.v1.Message"
            },
            "type": "array"
          },
          "next_cursor": {
            "description": "The cursor to pass as `cursor` next. Always set unless the\nnamespace is ephemeral.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.realtime.v1.ListNamespacesRequest": {
        "description": "The request of ListNamespaces.",
        "properties": {
          "page_size": {
            "description": "At most this many namespaces; the service caps it.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "The `next_page_token` of the previous page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.realtime.v1.ListNamespacesResponse": {
        "description": "The response of ListNamespaces.",
        "properties": {
          "namespaces": {
            "description": "The page of namespaces.",
            "items": {
              "$ref": "#/components/schemas/sylphx.realtime.v1.Namespace"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "Empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.realtime.v1.ListPresenceRequest": {
        "description": "The request of ListPresence.",
        "properties": {
          "channel": {
            "description": "The channel, `namespace:name`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many members; default 100, at most 1,000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "The `next_page_token` of the previous page.",
            "type": "string"
          }
        },
        "required": [
          "channel"
        ],
        "type": "object"
      },
      "sylphx.realtime.v1.ListPresenceResponse": {
        "description": "The response of ListPresence.",
        "properties": {
          "members": {
            "description": "The members present.",
            "items": {
              "$ref": "#/components/schemas/sylphx.realtime.v1.Member"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "Empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.realtime.v1.Member": {
        "description": "Member is one connection present on a channel.",
        "properties": {
          "connection_id": {
            "description": "The connection id, unique while the connection lives.",
            "type": "string"
          },
          "data": {
            "description": "The application's presence data, at most 4 KiB encoded."
          },
          "enter_time": {
            "description": "When this connection entered.",
            "format": "date-time",
            "type": "string"
          },
          "user": {
            "description": "The user id from the token.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.realtime.v1.Message": {
        "description": "Message is one message of a channel.",
        "properties": {
          "channel": {
            "description": "The channel, `namespace:name`.",
            "type": "string"
          },
          "cursor": {
            "description": "The message's cursor: opaque, ordered within the channel, and the value\nto resume from. Empty in an ephemeral namespace.",
            "type": "string"
          },
          "data": {
            "description": "The JSON payload, at most 64 KiB encoded."
          },
          "event": {
            "description": "The application's event name, for example `move`. 1 to 64 characters.",
            "type": "string"
          },
          "publish_time": {
            "description": "When the service accepted the message.",
            "format": "date-time",
            "type": "string"
          },
          "publisher": {
            "description": "The user id of the publisher; empty when a server published without one.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.realtime.v1.Namespace": {
        "description": "Namespace is the only configured object of Sylphx Realtime. It carries the\nrules of every channel named `<namespace>:<name>`. Channels are implicit:\nthey exist from their first publish or subscribe and are never created.\nDeclared in `sylphx.toml` as `[realtime.namespaces.<name>]`.",
        "properties": {
          "client_publish": {
            "description": "Whether a client holding a token with the publish capability may publish.\nDefault off: only servers publish.",
            "type": "boolean"
          },
          "create_time": {
            "description": "When the namespace was created.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "history": {
            "$ref": "#/components/schemas/sylphx.realtime.v1.HistoryPreset",
            "description": "How much history channels keep. Default NONE."
          },
          "name": {
            "description": "The namespace name: 1 to 32 characters of `a-z`, `0-9`, `-` and `_`,\nstarting with a letter. It is the part of a channel before the first\ncolon, and never changes.",
            "type": "string"
          },
          "presence": {
            "description": "Whether channels track who is present. Default off.",
            "type": "boolean"
          },
          "update_time": {
            "description": "When the rules last changed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.realtime.v1.PublishRequest": {
        "description": "The request of Publish.",
        "properties": {
          "channel": {
            "description": "The channel, `namespace:name`: the name is 1 to 128 characters of\n`a-z A-Z 0-9 - _ . =` and no `*`.",
            "type": "string"
          },
          "data": {
            "description": "The JSON payload, at most 64 KiB encoded."
          },
          "event": {
            "description": "The application's event name, 1 to 64 characters.",
            "type": "string"
          }
        },
        "required": [
          "channel",
          "event"
        ],
        "type": "object"
      },
      "sylphx.realtime.v1.PublishResponse": {
        "description": "The response of Publish.",
        "properties": {
          "message": {
            "$ref": "#/components/schemas/sylphx.realtime.v1.Message",
            "description": "The published message; its cursor is empty in an ephemeral namespace."
          }
        },
        "type": "object"
      },
      "sylphx.realtime.v1.PutNamespaceRequest": {
        "description": "The request of PutNamespace.",
        "properties": {
          "client_publish": {
            "description": "Whether clients may publish.",
            "type": "boolean"
          },
          "history": {
            "$ref": "#/components/schemas/sylphx.realtime.v1.HistoryPreset",
            "description": "How much history channels keep."
          },
          "name": {
            "description": "The namespace name; see Namespace.name.",
            "type": "string"
          },
          "presence": {
            "description": "Whether channels track presence.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.realtime.v1.TokenClaims": {
        "description": "TokenClaims are the claims every Sylphx Realtime token carries. A token is\nopaque to SDK users; this message states what the service puts in it and\nwhat it checks.",
        "properties": {
          "cell": {
            "description": "The authoritative Access cell id of the issuing tenant. Required.",
            "type": "string"
          },
          "environment": {
            "description": "The authoritative Access environment id, not a client-supplied value.\nValid only within the organization, project and cell below.",
            "type": "string"
          },
          "expire_time": {
            "description": "When the token expires. Between issue time plus 1 minute and 24 hours.\nThe service closes a connection whose token has expired and was not\nrefreshed.",
            "format": "date-time",
            "type": "string"
          },
          "grants": {
            "description": "The channels the holder may use. A connection token holds the grants of\nevery channel its connection may touch; a channel token holds exactly one.",
            "items": {
              "$ref": "#/components/schemas/sylphx.realtime.v1.ChannelGrant"
            },
            "type": "array"
          },
          "issue_time": {
            "description": "When the token was issued.",
            "format": "date-time",
            "type": "string"
          },
          "issuer_key_id": {
            "description": "The issuing Access key id (not its secret). Required: the service rechecks\nits freshness, expiry, revocation and token-issuing authority through the\nAccess verifier at admission, refresh and while the connection is open.",
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.realtime.v1.TokenKind",
            "description": "The token's kind."
          },
          "organization": {
            "description": "The authoritative Access organization id of the issuing tenant. Required.",
            "type": "string"
          },
          "project": {
            "description": "The authoritative Access project id of the issuing tenant. Required.",
            "type": "string"
          },
          "token_id": {
            "description": "A unique id; the service can revoke a token by it until it expires.",
            "type": "string"
          },
          "user": {
            "description": "The end user's id (`sub`). Required for a connection token; it is the\nuser shown in presence.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.realtime.v1.TokenKind": {
        "description": "TokenKind says what a token connects.",
        "enum": [
          "connection",
          "channel"
        ],
        "type": "string"
      },
      "sylphx.release.v1.CreateReleaseRequest": {
        "description": "The request of CreateRelease.",
        "properties": {
          "parent": {
            "description": "The environment to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "release.sylphx.com/Release"
          },
          "release": {
            "$ref": "#/components/schemas/sylphx.release.v1.Release",
            "description": "The release to create; only spec and caller-writable metadata are read."
          },
          "release_id": {
            "description": "The id of the new release, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "release"
        ],
        "type": "object"
      },
      "sylphx.release.v1.GetReleaseRequest": {
        "description": "The request of GetRelease.",
        "properties": {
          "name": {
            "description": "The name of the release to get.",
            "type": "string",
            "x-sylphx-resource-reference": "release.sylphx.com/Release"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.release.v1.GetRolloutRequest": {
        "description": "The request of GetRollout.",
        "properties": {
          "name": {
            "description": "The name of the rollout to get.",
            "type": "string",
            "x-sylphx-resource-reference": "release.sylphx.com/Rollout"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.release.v1.ListReleasesRequest": {
        "description": "The request of ListReleases.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "release.sylphx.com/Release"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.release.v1.ListReleasesResponse": {
        "description": "The response of ListReleases.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "releases": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.release.v1.Release"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.release.v1.ListRolloutsRequest": {
        "description": "The request of ListRollouts.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "release.sylphx.com/Rollout"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.release.v1.ListRolloutsResponse": {
        "description": "The response of ListRollouts.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "rollouts": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.release.v1.Rollout"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.release.v1.Placement": {
        "description": "Placement is attribute matching against the Cell registry: a workload is\nplaced on a Ready Cell that has every attribute, or refused.",
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Required cell attributes, for example `{\"substrate\": \"metal\"}`.",
            "type": "object"
          },
          "cells": {
            "description": "Specific cells, for example `fs01`; empty means any matching cell.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "regions": {
            "description": "Regions allowed, for example `fsn1`; empty means any.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "replicas": {
            "description": "Replicas per cell; default 1.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.release.v1.Release": {
        "description": "A Release is an immutable desired state of an environment's workloads.\nWriting a newer Release supersedes the live one; a rollback is a new\nRelease naming older digests.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/releases/{release}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.release.v1.ReleaseSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.release.v1.ReleaseStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`rel_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.release.v1.ReleaseMember": {
        "description": "ReleaseMember is one workload of a Release.",
        "properties": {
          "artifact": {
            "description": "The Artifact to run, by digest.",
            "type": "string",
            "x-sylphx-resource-reference": "artifacts.sylphx.com/Artifact"
          },
          "config": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Plain configuration values delivered as environment variables. Never a\nsecret value: those are Secret bindings.",
            "type": "object"
          },
          "placement": {
            "$ref": "#/components/schemas/sylphx.release.v1.Placement",
            "description": "Where the workload runs."
          },
          "secrets": {
            "description": "The Secret bindings the workload receives, each pinned to a version.",
            "items": {
              "$ref": "#/components/schemas/sylphx.release.v1.SecretPin"
            },
            "type": "array"
          },
          "workload": {
            "description": "The workload's name in the environment, for example `api`: the owning\nservice's Resource id (a Hosting service, a Workflows worker, ...).",
            "type": "string"
          }
        },
        "required": [
          "workload",
          "artifact"
        ],
        "type": "object"
      },
      "sylphx.release.v1.ReleaseMemberStatus": {
        "description": "ReleaseMemberStatus is one member's convergence.",
        "properties": {
          "cell_count": {
            "description": "How many cells the member is placed on.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "converged_cell_count": {
            "description": "How many cells run the member at this Release.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "observed_digest": {
            "description": "The digest the cells report running.",
            "readOnly": true,
            "type": "string"
          },
          "workload": {
            "description": "The workload.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.release.v1.ReleaseSpec": {
        "description": "ReleaseSpec is the caller-writable state of a Release; it never changes\nafter Create.",
        "properties": {
          "members": {
            "description": "The workloads, each by artifact digest. A member that names a tag or an\nunverified Artifact is refused.",
            "items": {
              "$ref": "#/components/schemas/sylphx.release.v1.ReleaseMember"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "rollout_policy": {
            "$ref": "#/components/schemas/sylphx.release.v1.RolloutPolicy",
            "description": "How the Release rolls out.",
            "x-sylphx-immutable": true
          }
        },
        "required": [
          "members"
        ],
        "type": "object"
      },
      "sylphx.release.v1.ReleaseState": {
        "description": "ReleaseState is the lifecycle state of a Release.",
        "enum": [
          "pending",
          "rolling_out",
          "live",
          "failed",
          "superseded",
          "rejected"
        ],
        "type": "string"
      },
      "sylphx.release.v1.ReleaseStatus": {
        "description": "ReleaseStatus is the observed state of a Release, derived from Cell\nStatus.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "live_time": {
            "description": "When every cell first served the Release.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "member_statuses": {
            "description": "Per-member convergence.",
            "items": {
              "$ref": "#/components/schemas/sylphx.release.v1.ReleaseMemberStatus"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "previous_release": {
            "description": "The Release that was live when this one was admitted.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "release.sylphx.com/Release"
          },
          "rollout": {
            "description": "The rollout carrying this Release.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "release.sylphx.com/Rollout"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.release.v1.ReleaseState",
            "description": "The Release's lifecycle state.",
            "readOnly": true
          },
          "successor": {
            "description": "The Release that replaced this one.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "release.sylphx.com/Release"
          }
        },
        "type": "object"
      },
      "sylphx.release.v1.Rollout": {
        "description": "A Rollout is the progress of one Release through its waves, derived from\nthe cell status the Release controller reports.",
        "properties": {
          "current_wave": {
            "description": "The index of the wave in progress, from 0.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "end_time": {
            "description": "When the rollout finished.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "halt_reason": {
            "description": "A customer-safe reason the rollout halted.",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata.",
            "readOnly": true
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/rollouts/{rollout}`.",
            "type": "string"
          },
          "release": {
            "description": "The Release rolling out.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "release.sylphx.com/Release"
          },
          "start_time": {
            "description": "When the first wave started.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.release.v1.RolloutState",
            "description": "The rollout's lifecycle state.",
            "readOnly": true
          },
          "uid": {
            "description": "`rol_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          },
          "waves": {
            "description": "The waves, in order.",
            "items": {
              "$ref": "#/components/schemas/sylphx.release.v1.Wave"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.release.v1.RolloutPolicy": {
        "description": "RolloutPolicy is how a Release moves through waves.",
        "properties": {
          "bake_duration": {
            "description": "How long each wave bakes, healthy, before the next starts; default\n10 minutes.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "halt_on_failure": {
            "description": "Halt the rollout when a wave's health gate fails; default true.",
            "type": "boolean"
          },
          "skip_waves": {
            "description": "Skip the waves and apply to every cell together: break-glass only, and\nrefused for any other principal.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.release.v1.RolloutState": {
        "description": "RolloutState is the lifecycle state of a Rollout or one of its waves.",
        "enum": [
          "waiting",
          "in_progress",
          "succeeded",
          "failed",
          "superseded"
        ],
        "type": "string"
      },
      "sylphx.release.v1.SecretPin": {
        "description": "SecretPin pins a Secret binding to one version for a Release.",
        "properties": {
          "binding": {
            "description": "The binding.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretBinding"
          },
          "version": {
            "description": "The version it delivers; unset pins the binding's resolved version at\nadmission.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretVersion"
          }
        },
        "required": [
          "binding"
        ],
        "type": "object"
      },
      "sylphx.release.v1.Wave": {
        "description": "Wave is one step of a rollout.",
        "properties": {
          "cells": {
            "description": "The cells in the wave.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "end_time": {
            "description": "When the wave passed its health gate or failed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "healthy_cell_count": {
            "description": "How many of the wave's cells report the Release converged and healthy.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "scope": {
            "$ref": "#/components/schemas/sylphx.release.v1.WaveScope",
            "description": "What the wave covers.",
            "readOnly": true
          },
          "start_time": {
            "description": "When the wave started.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.release.v1.RolloutState",
            "description": "The wave's lifecycle state.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.release.v1.WaveScope": {
        "description": "WaveScope is what one wave of a rollout covers.",
        "enum": [
          "canary",
          "cell",
          "region",
          "all"
        ],
        "type": "string"
      },
      "sylphx.runners.v1.CreateScaleSetRequest": {
        "description": "The request of CreateScaleSet.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "runners.sylphx.com/ScaleSet"
          },
          "scale_set": {
            "$ref": "#/components/schemas/sylphx.runners.v1.ScaleSet",
            "description": "The scale set to create; only spec and caller-writable metadata are read."
          },
          "scale_set_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "scale_set"
        ],
        "type": "object"
      },
      "sylphx.runners.v1.DeleteScaleSetRequest": {
        "description": "The request of DeleteScaleSet.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete every child Resource; without it a parent with children fails\nwith FAILED_PRECONDITION.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the scale set to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "runners.sylphx.com/ScaleSet"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.runners.v1.GetRunnerRequest": {
        "description": "The request of GetRunner.",
        "properties": {
          "name": {
            "description": "The name of the runner to get.",
            "type": "string",
            "x-sylphx-resource-reference": "runners.sylphx.com/Runner"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.runners.v1.GetScaleSetRequest": {
        "description": "The request of GetScaleSet.",
        "properties": {
          "name": {
            "description": "The name of the scale set to get.",
            "type": "string",
            "x-sylphx-resource-reference": "runners.sylphx.com/ScaleSet"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.runners.v1.ListRunnersRequest": {
        "description": "The request of ListRunners.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "runners.sylphx.com/Runner"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.runners.v1.ListRunnersResponse": {
        "description": "The response of ListRunners.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "runners": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.runners.v1.Runner"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.runners.v1.ListScaleSetsRequest": {
        "description": "The request of ListScaleSets.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "runners.sylphx.com/ScaleSet"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.runners.v1.ListScaleSetsResponse": {
        "description": "The response of ListScaleSets.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "scale_sets": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.runners.v1.ScaleSet"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.runners.v1.Runner": {
        "description": "A Runner is one runner: one machine for exactly one job, on its own\nSandboxes lease, released and wiped after. Runners is its only writer;\ncallers read it.",
        "properties": {
          "end_time": {
            "description": "When its job ended.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "failure": {
            "$ref": "#/components/schemas/sylphx.runners.v1.RunnerFailure",
            "description": "Why it never ran a job, when `state` is FAILED.",
            "readOnly": true
          },
          "job_uri": {
            "description": "The job on the forge.",
            "readOnly": true,
            "type": "string"
          },
          "lease": {
            "description": "Its Sandboxes lease.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/scale_sets/{scale_set}/runners/{runner}`.",
            "type": "string"
          },
          "repository": {
            "description": "The repository of its job, `<owner>/<name>`.",
            "readOnly": true,
            "type": "string"
          },
          "runner_class": {
            "description": "The class it runs as.",
            "readOnly": true,
            "type": "string"
          },
          "start_time": {
            "description": "When its job started.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.runners.v1.RunnerState",
            "description": "The lifecycle state.",
            "readOnly": true
          },
          "uid": {
            "description": "`rnr_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.runners.v1.RunnerFailure": {
        "description": "RunnerFailure is why a runner never ran its job. The job keeps waiting at\nthe forge.",
        "enum": [
          "no_capacity",
          "class_not_offered",
          "capability_missing",
          "boot_failed"
        ],
        "type": "string"
      },
      "sylphx.runners.v1.RunnerState": {
        "description": "RunnerState is the lifecycle of one runner.",
        "enum": [
          "provisioning",
          "idle",
          "busy",
          "finished",
          "failed"
        ],
        "type": "string"
      },
      "sylphx.runners.v1.ScaleSet": {
        "description": "A ScaleSet registers one runner class on one Sylphx Runners installation.\nRunners holds its message session with one fenced holder, and GitHub matches\njobs to its runners; Runners keeps no global queue.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/scale_sets/{scale_set}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.runners.v1.ScaleSetSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.runners.v1.ScaleSetStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`rss_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.runners.v1.ScaleSetSpec": {
        "description": "ScaleSetSpec is the caller-writable state of a ScaleSet.",
        "properties": {
          "connection": {
            "description": "The Sylphx Runners installation Connection.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "connections.sylphx.com/Connection"
          },
          "max_runners": {
            "description": "Concurrent runners at most; 0 means the plan's limit.",
            "format": "int32",
            "type": "integer"
          },
          "runner_class": {
            "description": "The class, `sylphx-<os>-<size>`, for example `sylphx-linux-standard`. It\nis the label workflows ask for.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "runner_group": {
            "description": "The forge runner group to register in; default the installation's default\ngroup.",
            "type": "string"
          }
        },
        "required": [
          "connection",
          "runner_class"
        ],
        "type": "object"
      },
      "sylphx.runners.v1.ScaleSetStatus": {
        "description": "ScaleSetStatus is the observed state of a ScaleSet.",
        "properties": {
          "busy_runners": {
            "description": "Runners running a job.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "idle_runners": {
            "description": "Runners waiting for a job.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "registration": {
            "description": "The forge's id of the registered scale set.",
            "readOnly": true,
            "type": "string"
          },
          "session_region": {
            "description": "The region whose holder owns the message session.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.runners.v1.UpdateScaleSetRequest": {
        "description": "The request of UpdateScaleSet.",
        "properties": {
          "allow_missing": {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "scale_set": {
            "$ref": "#/components/schemas/sylphx.runners.v1.ScaleSet",
            "description": "The scale set to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "scale_set"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.AcquireLeaseControlRequest": {
        "description": "The request of AcquireLeaseControl.",
        "properties": {
          "holder": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ControlHolder",
            "description": "HUMAN or AGENT."
          },
          "holder_label": {
            "description": "A label for the holder, for example the person's user id; recorded in\nthe audit events.",
            "type": "string"
          },
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "preempt": {
            "description": "For HUMAN: take control from another human.",
            "type": "boolean"
          },
          "ttl": {
            "description": "How long; default 10 minutes, capped at 30 minutes.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "name",
          "holder"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.AcquireLeaseControlResponse": {
        "description": "The response of AcquireLeaseControl.",
        "properties": {
          "control": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ControlState",
            "description": "The control now held."
          },
          "stream": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.StreamSession",
            "description": "For HUMAN: the controller stream bound to this epoch."
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ActLeaseRequest": {
        "description": "The request of ActLease.",
        "properties": {
          "actions": {
            "description": "The actions, performed in order; at most 64. An empty list with\n`screenshot` set only takes a screenshot.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.ComputerAction"
            },
            "type": "array"
          },
          "control_epoch": {
            "description": "Act under this AGENT control epoch; 0 acts only while nobody holds\ncontrol.",
            "format": "int64",
            "type": "string"
          },
          "lease_generation": {
            "description": "Refuse STALE_GENERATION unless the lease is at this generation; 0 skips\nthe check.",
            "format": "int64",
            "type": "string"
          },
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "screenshot": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ScreenshotOptions",
            "description": "Take a screenshot after the last action and return it."
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ActLeaseResponse": {
        "description": "The response of ActLease.",
        "properties": {
          "control": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ControlState",
            "description": "The control the actions ran under."
          },
          "lease_generation": {
            "description": "The lease generation the actions ran under.",
            "format": "int64",
            "type": "string"
          },
          "results": {
            "description": "One result per action, in order.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.ActionResult"
            },
            "type": "array"
          },
          "screenshot": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Screenshot",
            "description": "The screenshot after the last action, when requested."
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ActionResult": {
        "description": "ActionResult is the outcome of one ComputerAction.",
        "properties": {
          "cursor": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Point",
            "description": "The pointer position after the action (and the answer of\n`cursor_position`)."
          },
          "image": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Screenshot",
            "description": "For `take_screenshot` and `zoom`."
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.BrowserSpec": {
        "description": "BrowserSpec configures the Chromium of a BROWSER lease.",
        "properties": {
          "headless": {
            "description": "Run headless instead of on the display. A headless browser has no stream\nand no computer actions; CDP only.",
            "type": "boolean"
          },
          "start_url": {
            "description": "The page opened at start; default `about:blank`.",
            "type": "string"
          },
          "user_data_dir": {
            "description": "The profile directory; put it on a volume to keep cookies and storage\nacross leases. Default a fresh profile.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ButtonAction": {
        "description": "ButtonAction presses or releases one button.",
        "properties": {
          "button": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.MouseButton",
            "description": "Default LEFT."
          },
          "position": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Point",
            "description": "Where; unset acts at the current pointer position."
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ClickAction": {
        "description": "ClickAction clicks a button one to three times.",
        "properties": {
          "button": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.MouseButton",
            "description": "Default LEFT."
          },
          "count": {
            "description": "1 (default), 2 (double), or 3 (triple).",
            "format": "int32",
            "type": "integer"
          },
          "modifiers": {
            "description": "Keys held during the click, xdotool names (`shift`, `ctrl`, `alt`,\n`super`).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "position": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Point",
            "description": "Where; unset clicks at the current pointer position."
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.CloseLeasePortRequest": {
        "description": "The request of CloseLeasePort.",
        "properties": {
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "port": {
            "description": "The guest port.",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "name",
          "port"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ComputerAction": {
        "description": "ComputerAction is one input or observation. Coordinates are logical display\npixels (`status.display`), origin top-left.",
        "properties": {
          "click": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ClickAction",
            "description": "Click (Anthropic `left_click`, `right_click`, `middle_click`,\n`double_click`, `triple_click`; OpenAI `click`, `double_click`; Android\ntap)."
          },
          "cursor_position": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.CursorPositionAction",
            "description": "Report the pointer position (Anthropic `cursor_position`)."
          },
          "drag": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.DragAction",
            "description": "Press, move along a path, release (Anthropic `left_click_drag`, OpenAI\n`drag`; Android swipe)."
          },
          "hold_key": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.HoldKeyAction",
            "description": "Hold a key combination for a duration (Anthropic `hold_key`)."
          },
          "key": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.KeyAction",
            "description": "Press a key combination (Anthropic `key`, OpenAI `keypress`; Android\nkey events)."
          },
          "mouse_down": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ButtonAction",
            "description": "Press a button without releasing it (Anthropic `left_mouse_down`)."
          },
          "mouse_up": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ButtonAction",
            "description": "Release a button (Anthropic `left_mouse_up`)."
          },
          "move": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.PointerMove",
            "description": "Move the pointer (Anthropic `mouse_move`, OpenAI `move`)."
          },
          "scroll": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ScrollAction",
            "description": "Scroll (Anthropic `scroll`, OpenAI `scroll`)."
          },
          "take_screenshot": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ScreenshotAction",
            "description": "Capture the display (Anthropic `screenshot`, OpenAI `screenshot`)."
          },
          "type": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.TypeAction",
            "description": "Type text (Anthropic `type`, OpenAI `type`)."
          },
          "wait": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.WaitAction",
            "description": "Wait (Anthropic `wait`, OpenAI `wait`)."
          },
          "zoom": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ZoomAction",
            "description": "Capture a region at full resolution (Anthropic `zoom`)."
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ControlHolder": {
        "description": "ControlHolder is who holds a lease's input control.",
        "enum": [
          "agent",
          "human"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.ControlState": {
        "description": "ControlState says who holds input control of a lease's display. Control is\nan exclusive lock with a hard time limit enforced in the Cell. While a\nHUMAN holds it, agent actions are refused CONTROL_HELD_BY_HUMAN.",
        "properties": {
          "acquire_time": {
            "description": "When control was acquired.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "epoch": {
            "description": "Increases on every acquire; release names it.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "expire_time": {
            "description": "When control lapses unless re-acquired.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "holder": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ControlHolder",
            "description": "Who holds control; UNSPECIFIED when nobody does (agent actions allowed).",
            "readOnly": true
          },
          "holder_label": {
            "description": "The caller's label for the person or agent, for example a user id.",
            "readOnly": true,
            "type": "string"
          },
          "principal": {
            "description": "The Access principal that acquired control.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.CreateLeaseRequest": {
        "description": "The request of CreateLease.",
        "properties": {
          "lease": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Lease",
            "description": "The lease to create; only spec and caller-writable metadata are read."
          },
          "lease_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "skip_wait_ready": {
            "description": "Return as soon as the machine is granted instead of when the guest is\nready. Default false: wait for READY, at most 60 seconds.",
            "type": "boolean"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "lease"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.CreatePoolRequest": {
        "description": "The request of CreatePool.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Pool"
          },
          "pool": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Pool",
            "description": "The pool to create; only spec and caller-writable metadata are read."
          },
          "pool_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "pool"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.CreateSnapshotRequest": {
        "description": "The request of CreateSnapshot.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Snapshot"
          },
          "snapshot": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Snapshot",
            "description": "The snapshot to create; only spec and caller-writable metadata are read."
          },
          "snapshot_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "snapshot"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.CreateVolumeRequest": {
        "description": "The request of CreateVolume.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Volume"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          },
          "volume": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Volume",
            "description": "The volume to create; only spec and caller-writable metadata are read."
          },
          "volume_id": {
            "description": "The id segment of the name; the server assigns one when unset.",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "volume"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.CursorPositionAction": {
        "description": "CursorPositionAction reports the pointer position in its result.",
        "properties": {},
        "type": "object"
      },
      "sylphx.sandboxes.v1.DeletePoolRequest": {
        "description": "The request of DeletePool.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the pool to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Pool"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.DeleteSnapshotRequest": {
        "description": "The request of DeleteSnapshot.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the snapshot to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Snapshot"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.DeleteVolumeRequest": {
        "description": "The request of DeleteVolume.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the Resource does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the volume to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Volume"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.DeviceSpec": {
        "description": "DeviceSpec chooses the device of a device lease. An unknown model or OS\nversion is refused SHAPE_NOT_OFFERED.",
        "properties": {
          "model": {
            "description": "A model id from the device catalog, e.g. `pixel_7`; default `pixel_7`.",
            "type": "string"
          },
          "os_version": {
            "description": "The OS version, e.g. `14`; default the newest offered.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.DisplayInfo": {
        "description": "DisplayInfo is a lease's effective display.",
        "properties": {
          "dpi": {
            "description": "Dots per inch.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "height": {
            "description": "Logical height in pixels.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "width": {
            "description": "Logical width in pixels; action coordinates are in this space.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.DisplaySpec": {
        "description": "DisplaySpec is a lease's requested display.",
        "properties": {
          "dpi": {
            "description": "Dots per inch; default 96.",
            "format": "int32",
            "type": "integer"
          },
          "height": {
            "description": "Logical height in pixels; default 800.",
            "format": "int32",
            "type": "integer"
          },
          "width": {
            "description": "Logical width in pixels; default 1280.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.DragAction": {
        "description": "DragAction presses at the first point, moves through the rest, and\nreleases at the last.",
        "properties": {
          "button": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.MouseButton",
            "description": "Default LEFT."
          },
          "duration": {
            "description": "Total time of the move; default 300 ms (Android swipe duration).",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "modifiers": {
            "description": "Keys held during the drag, xdotool names.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "path": {
            "description": "At least two points.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.Point"
            },
            "type": "array"
          }
        },
        "required": [
          "path"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.EgressPolicy": {
        "description": "EgressPolicy is a lease's outbound rule.",
        "enum": [
          "allow",
          "deny",
          "allowlist"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.EndReason": {
        "description": "EndReason is why a lease ended.",
        "enum": [
          "released",
          "expired",
          "idle",
          "cpu_budget",
          "cost_budget",
          "abuse",
          "quota",
          "org_deleted",
          "machine_lost",
          "boot_failed",
          "preempted"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.ExecLeaseRequest": {
        "description": "The request of ExecLease.",
        "properties": {
          "command": {
            "description": "The program and its arguments. Use `[\"bash\", \"-lc\", \"…\"]` for a shell.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Extra environment variables.",
            "type": "object"
          },
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "stdin": {
            "contentEncoding": "base64",
            "description": "Bytes written to standard input.",
            "type": "string"
          },
          "timeout": {
            "description": "Kill the process after this long; default 60 seconds, at most 10\nminutes.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "user": {
            "description": "The guest user; default `user`. `root` is allowed: the whole machine\nbelongs to the lessee.",
            "type": "string"
          },
          "working_directory": {
            "description": "The working directory; default the user's home.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "command"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ExecLeaseResponse": {
        "description": "The response of ExecLease.",
        "properties": {
          "exit_code": {
            "description": "The exit code; -1 when killed.",
            "format": "int32",
            "type": "integer"
          },
          "stderr": {
            "contentEncoding": "base64",
            "description": "Standard error.",
            "type": "string"
          },
          "stdout": {
            "contentEncoding": "base64",
            "description": "Standard output.",
            "type": "string"
          },
          "timed_out": {
            "description": "Whether the process was killed at `timeout`.",
            "type": "boolean"
          },
          "truncated": {
            "description": "Whether either stream exceeded the cap.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.FileEntry": {
        "description": "FileEntry is one entry of a guest directory.",
        "properties": {
          "directory": {
            "description": "Whether it is a directory.",
            "type": "boolean"
          },
          "mode": {
            "description": "The mode bits.",
            "format": "int32",
            "type": "integer"
          },
          "modify_time": {
            "description": "When it last changed.",
            "format": "date-time",
            "type": "string"
          },
          "path": {
            "description": "The absolute path.",
            "type": "string"
          },
          "size_bytes": {
            "description": "Size in bytes.",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.GetLeaseControlRequest": {
        "description": "The request of GetLeaseControl.",
        "properties": {
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.GetLeaseEventRequest": {
        "description": "The request of GetLeaseEvent.",
        "properties": {
          "name": {
            "description": "The name of the event to get.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/LeaseEvent"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.GetLeaseRequest": {
        "description": "The request of GetLease.",
        "properties": {
          "name": {
            "description": "The name of the lease to get.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.GetPoolRequest": {
        "description": "The request of GetPool.",
        "properties": {
          "name": {
            "description": "The name of the pool to get.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Pool"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.GetShapeRequest": {
        "description": "The request of GetShape.",
        "properties": {
          "name": {
            "description": "The name of the shape to get.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Shape"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.GetSnapshotRequest": {
        "description": "The request of GetSnapshot.",
        "properties": {
          "name": {
            "description": "The name of the snapshot to get.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Snapshot"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.GetVolumeRequest": {
        "description": "The request of GetVolume.",
        "properties": {
          "name": {
            "description": "The name of the volume to get.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Volume"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.HoldKeyAction": {
        "description": "HoldKeyAction holds a combination down, then releases it.",
        "properties": {
          "combo": {
            "description": "The combination, xdotool syntax.",
            "type": "string"
          },
          "duration": {
            "description": "How long; at most 10 seconds.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "combo",
          "duration"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.IceServer": {
        "description": "IceServer is one RTCIceServer.",
        "properties": {
          "credential": {
            "description": "The TURN credential.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "urls": {
            "description": "`stun:`, `turn:`, or `turns:` URLs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "username": {
            "description": "The TURN username.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ImageFormat": {
        "description": "ImageFormat is a screenshot encoding.",
        "enum": [
          "png",
          "jpeg",
          "webp"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.InstallLeaseAppRequest": {
        "description": "The request of InstallLeaseApp.",
        "properties": {
          "apk_path": {
            "description": "The APK's path in the lease (write it with WriteLeaseFile first).",
            "type": "string"
          },
          "grant_permissions": {
            "description": "Grant every runtime permission the app declares.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          }
        },
        "required": [
          "name",
          "apk_path"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.InstallLeaseAppResponse": {
        "description": "The response of InstallLeaseApp.",
        "properties": {
          "package_name": {
            "description": "The installed package name.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.KeyAction": {
        "description": "KeyAction presses a key combination, xdotool syntax: `Return`, `ctrl+c`,\n`ctrl+shift+t`, `super`, `F5`. On Android, `home`, `back`, `app_switch`,\n`power`, `volume_up`, `volume_down`, `enter`, or `KEYCODE_*`.",
        "properties": {
          "combo": {
            "description": "The combination.",
            "type": "string"
          },
          "repeat": {
            "description": "Press it this many times; default 1.",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "combo"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.Lease": {
        "description": "A Lease is one isolated machine of a shape, region, and image for a bounded\ntime. It is granted immediately from a warm or cold machine, or refused with\na typed reason; its end destroys the machine. Sandboxes is its only writer.\nPut the caller's own correlation (agent id, work id) in `meta.labels`; List\nfilters on them.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/leases/{lease}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`sbx_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.LeaseBudget": {
        "description": "LeaseBudget bounds what one lease may consume. Reaching a bound ends the\nlease with the matching EndReason; the Cell enforces it without the\ncontrol plane.",
        "properties": {
          "max_cost_micros": {
            "description": "End COST_BUDGET once the shape's list price times wall seconds reaches\nthis many millionths of a US dollar.",
            "format": "int64",
            "type": "string"
          },
          "max_cpu_seconds": {
            "description": "End CPU_BUDGET after this many vCPU-seconds of guest CPU time.",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.LeaseEndpoints": {
        "description": "LeaseEndpoints are a lease's data-plane addresses. Each accepts an Access\nkey with `sandboxes:exec` or a lease token of the matching scope.",
        "properties": {
          "cdp_uri": {
            "description": "The Chrome DevTools Protocol WebSocket of a BROWSER lease.",
            "readOnly": true,
            "type": "string"
          },
          "e2b_sandbox_id": {
            "description": "The E2B sandbox id this lease answers to on the E2B-compatible API.",
            "readOnly": true,
            "type": "string"
          },
          "guest_uri": {
            "description": "The guest daemon: the E2B envd protocol (Connect-RPC `process.Process`,\n`filesystem.Filesystem`, HTTP `/files`), routed by the `E2b-Sandbox-Id`\nheader, for streaming exec and PTYs.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.LeaseEvent": {
        "description": "A LeaseEvent is one immutable fact in a lease's life: grant, ready, end,\ncontrol changes, network changes. Events are listed in order and\nlong-polled with `wait`.",
        "properties": {
          "control": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ControlState",
            "description": "For CONTROL_* events: the control after the event.",
            "readOnly": true
          },
          "control_duration": {
            "description": "For CONTROL_RELEASED and CONTROL_EXPIRED: how long control was held.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "readOnly": true,
            "type": "string"
          },
          "end_reason": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.EndReason",
            "description": "For LEASE_ENDED.",
            "readOnly": true
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseEventKind",
            "description": "What happened.",
            "readOnly": true
          },
          "lease_generation": {
            "description": "The lease generation after the event.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/leases/{lease}/lease_events/{lease_event}`.",
            "type": "string"
          },
          "occur_time": {
            "description": "When it happened.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "principal": {
            "description": "The principal that caused it, when a caller did.",
            "readOnly": true,
            "type": "string"
          },
          "sequence": {
            "description": "The position in the lease's event sequence, from 1.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseState",
            "description": "The lease state after the event.",
            "readOnly": true
          },
          "uid": {
            "description": "`lev_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "usage": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseUsage",
            "description": "For LEASE_ENDED: final usage.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.LeaseEventKind": {
        "description": "LeaseEventKind is what a LeaseEvent records.",
        "enum": [
          "granted",
          "ready",
          "refused",
          "ended",
          "renewed",
          "network_changed",
          "control_acquired",
          "control_released",
          "control_expired",
          "budget_warning",
          "paused",
          "resumed"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.LeaseKind": {
        "description": "LeaseKind is what a lease's machine serves.",
        "enum": [
          "general",
          "browser",
          "desktop",
          "android"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.LeaseNetwork": {
        "description": "LeaseNetwork is a lease's outbound policy. Link-local and cloud metadata\naddresses (169.254.0.0/16, fd00:ec2::254), RFC 1918, CGNAT\n(100.64.0.0/10), loopback, and the Cell's internal address ranges\nare blocked under every policy and cannot be allowlisted.",
        "properties": {
          "allowed_cidrs": {
            "description": "Public CIDRs reachable when `egress` is ALLOWLIST.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "allowed_domains": {
            "description": "Hosts reachable when `egress` is ALLOWLIST: exact names or one leading\n`*.` wildcard label, for example `api.openai.com`, `*.github.com`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "blocked_cidrs": {
            "description": "The ranges blocked under every policy.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "egress": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.EgressPolicy",
            "description": "Default ALLOW."
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.LeasePort": {
        "description": "LeasePort is a guest port reachable through the lease's data plane.",
        "properties": {
          "port": {
            "description": "The guest port.",
            "format": "int32",
            "type": "integer"
          },
          "uri": {
            "description": "The port's URL.",
            "readOnly": true,
            "type": "string"
          },
          "visibility": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.PortVisibility",
            "description": "Default PRIVATE: a lease token or an Access key with `sandboxes:exec` is\nrequired."
          }
        },
        "required": [
          "port"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.LeaseRefusal": {
        "description": "LeaseRefusal is the typed reason a lease was not granted. There is no global\nqueue: a lease is granted now or refused.",
        "enum": [
          "no_capacity",
          "no_matching_cell",
          "shape_not_offered",
          "shape_not_entitled",
          "image_not_found",
          "abuse_hold"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.LeaseSpec": {
        "description": "LeaseSpec is the caller-writable state of a Lease.",
        "properties": {
          "browser": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.BrowserSpec",
            "description": "The browser of a BROWSER lease.",
            "x-sylphx-immutable": true
          },
          "budget": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseBudget",
            "description": "Spend bounds beyond `ttl` and `idle_timeout`.",
            "x-sylphx-immutable": true
          },
          "device": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.DeviceSpec",
            "description": "The device of an ANDROID lease: model and OS version\n(device-farm.md §2.1). The device sets the display; `display` is\nignored.",
            "x-sylphx-immutable": true
          },
          "display": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.DisplaySpec",
            "description": "The display of a DESKTOP, BROWSER, or ANDROID lease.",
            "x-sylphx-immutable": true
          },
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Plain environment variables. Secrets bind through Sylphx Secrets, never\nhere.",
            "type": "object",
            "x-sylphx-immutable": true
          },
          "idle_timeout": {
            "description": "End the lease IDLE after no data-plane call, stream input, or exec for\nthis long; unset never idles out.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "image": {
            "description": "The image: an artifact in Sylphx Artifacts, by digest, or `template:<name>`\n(`base`,\n`desktop`, `browser`, `android`). Ignored when `source_snapshot` is set.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseKind",
            "description": "What the machine serves; default GENERAL.",
            "x-sylphx-immutable": true
          },
          "network": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseNetwork",
            "description": "The outbound policy. Change it on a running lease with `:setNetwork`."
          },
          "pool": {
            "description": "The Pool to take a warm machine from; default the platform pool for the\nshape and image.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Pool"
          },
          "ports": {
            "description": "Guest ports to expose.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeasePort"
            },
            "type": "array"
          },
          "region": {
            "description": "The region; default the project's home region.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "shape": {
            "description": "The shape.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Shape"
          },
          "source_snapshot": {
            "description": "Boot from this Snapshot's disk and image instead of `image`.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Snapshot"
          },
          "ttl": {
            "description": "The maximum wall time from grant: 1 minute to 24 hours for microVMs, 24\nhours to 30 days for macOS. `:renew` extends it within the shape's bound.\nReaching it ends the lease EXPIRED.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "volumes": {
            "description": "Volumes attached at grant, each by name. A volume is attached to at most\none lease at a time; a volume already attached refuses the lease with\nRESOURCE_IN_USE.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.VolumeMount"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "webhook": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseWebhook",
            "description": "Where lease events are delivered as signed webhooks, in addition to\n`leases/*/events`.",
            "x-sylphx-immutable": true
          }
        },
        "required": [
          "shape",
          "ttl"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.LeaseState": {
        "description": "LeaseState is the lease state machine (sandboxes-e2b.md §5.4).",
        "enum": [
          "requested",
          "granted",
          "ready",
          "paused",
          "ending",
          "ended",
          "refused"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.LeaseStatus": {
        "description": "LeaseStatus is the observed state of a Lease.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "control": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ControlState",
            "description": "Who holds input control of the display.",
            "readOnly": true
          },
          "display": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.DisplayInfo",
            "description": "The effective display, for kinds that have one.",
            "readOnly": true
          },
          "end_reason": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.EndReason",
            "description": "Why the lease ended, once `state` is ENDING or ENDED.",
            "readOnly": true
          },
          "end_time": {
            "description": "When the lease ended.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "endpoints": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseEndpoints",
            "description": "Data-plane addresses.",
            "readOnly": true
          },
          "expire_time": {
            "description": "When the lease ends unless renewed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "grant_time": {
            "description": "When a machine was assigned.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "lease_generation": {
            "description": "Increases on grant, pause, resume, and end; every token and platform\ncommand carries it, and a stale one is refused STALE_GENERATION.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "network": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseNetwork",
            "description": "The effective outbound policy, including the ranges always blocked.",
            "readOnly": true
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "ready_time": {
            "description": "When the guest became ready.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "refusal": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseRefusal",
            "description": "Why the lease was refused, when `state` is REFUSED.",
            "readOnly": true
          },
          "short_id": {
            "description": "Eight Crockford base32 characters naming the lease in data-plane routes.",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseState",
            "description": "The state machine.",
            "readOnly": true
          },
          "usage": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseUsage",
            "description": "What the lease has consumed so far.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.LeaseUsage": {
        "description": "LeaseUsage is what a lease has consumed, refreshed at least every 60\nseconds while it runs and final once it ends.",
        "properties": {
          "cost_micros": {
            "description": "List-price cost so far, in millionths of a US dollar; 0 on classes that\nare not priced.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "cpu_seconds": {
            "description": "Guest vCPU-seconds.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "egress_bytes": {
            "description": "Bytes sent to the internet.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "measure_time": {
            "description": "When this usage was measured.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "memory_gib_seconds": {
            "description": "Memory GiB-seconds (shape memory times wall seconds).",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "stream_seconds": {
            "description": "Seconds of live stream viewing, summed over viewers.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "wall_seconds": {
            "description": "Wall seconds from grant.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.LeaseWebhook": {
        "description": "LeaseWebhook delivers lease events as Standard Webhooks, signed Ed25519\n(`webhook-signature: v1a,…`) with the key published at\n`/.well-known/sandboxes-webhook-keys.json`.",
        "properties": {
          "kinds": {
            "description": "Deliver only these kinds; default every kind.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseEventKind"
            },
            "type": "array"
          },
          "uri": {
            "description": "The HTTPS URL that receives the POSTs.",
            "type": "string"
          }
        },
        "required": [
          "uri"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListLeaseEventsRequest": {
        "description": "The request of ListLeaseEvents.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over `kind`.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/LeaseEvent"
          },
          "wait": {
            "description": "Block up to this long (at most 60 seconds) when there is no event after\n`page_token`.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListLeaseEventsResponse": {
        "description": "The response of ListLeaseEvents.",
        "properties": {
          "lease_events": {
            "description": "The page, oldest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseEvent"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "Pass it back to continue after the last event; set on every page, so a\ncaller can long-poll from it.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListLeaseFilesRequest": {
        "description": "The request of ListLeaseFiles.",
        "properties": {
          "depth": {
            "description": "Descend this many levels; default 1.",
            "format": "int32",
            "type": "integer"
          },
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "path": {
            "description": "The absolute directory path in the guest.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "path"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListLeaseFilesResponse": {
        "description": "The response of ListLeaseFiles.",
        "properties": {
          "entries": {
            "description": "The entries.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.FileEntry"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListLeasesRequest": {
        "description": "The request of ListLeases.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListLeasesResponse": {
        "description": "The response of ListLeases.",
        "properties": {
          "leases": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.Lease"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListPoolsRequest": {
        "description": "The request of ListPools.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Pool"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListPoolsResponse": {
        "description": "The response of ListPools.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "pools": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.Pool"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListSandboxShapesRequest": {
        "description": "The request of ListSandboxShapes.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListSandboxShapesResponse": {
        "description": "The response of ListSandboxShapes.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "sandbox_shapes": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.Shape"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListSnapshotsRequest": {
        "description": "The request of ListSnapshots.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Snapshot"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListSnapshotsResponse": {
        "description": "The response of ListSnapshots.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "snapshots": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.Snapshot"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListVolumesRequest": {
        "description": "The request of ListVolumes.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Volume"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ListVolumesResponse": {
        "description": "The response of ListVolumes.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "volumes": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.Volume"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.MintLeaseTokenRequest": {
        "description": "The request of MintLeaseToken.",
        "properties": {
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "scopes": {
            "description": "What the token admits.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.TokenScope"
            },
            "type": "array"
          },
          "ttl": {
            "description": "At most 1 hour and never past the lease's `expire_time`.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "name",
          "scopes"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.MintLeaseTokenResponse": {
        "description": "The response of MintLeaseToken.",
        "properties": {
          "expire_time": {
            "description": "When the token stops verifying.",
            "format": "date-time",
            "type": "string"
          },
          "generation": {
            "description": "The lease generation the token is bound to.",
            "format": "int64",
            "type": "string"
          },
          "token": {
            "description": "The lease token; sent as a bearer token to the data plane.",
            "type": "string",
            "x-sylphx-sensitive": true
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.MouseButton": {
        "description": "MouseButton is a pointer button.",
        "enum": [
          "left",
          "right",
          "middle",
          "back",
          "forward"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.OpenLeasePortRequest": {
        "description": "The request of OpenLeasePort.",
        "properties": {
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "port": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeasePort",
            "description": "The port to expose."
          }
        },
        "required": [
          "name",
          "port"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.OpenLeaseStreamRequest": {
        "description": "The request of OpenLeaseStream.",
        "properties": {
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "ttl": {
            "description": "How long the token admits a new connection; at most and default 5\nminutes. A connected stream ends when the lease generation changes or the\ntoken is revoked.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.PauseLeaseRequest": {
        "description": "The request of PauseLease.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "validate_only": {
            "description": "Validate without acting.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.Point": {
        "description": "Point is a position in logical display pixels.",
        "properties": {
          "x": {
            "description": "Pixels from the left edge.",
            "format": "int32",
            "type": "integer"
          },
          "y": {
            "description": "Pixels from the top edge.",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "x",
          "y"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.PointerMove": {
        "description": "PointerMove moves the pointer.",
        "properties": {
          "position": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Point",
            "description": "Where to."
          }
        },
        "required": [
          "position"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.Pool": {
        "description": "A Pool keeps never-leased machines of one shape and image warm, so a lease\nstarts in seconds. An empty pool makes a lease slower, never different.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/pools/{pool}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.PoolSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.PoolStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`pol_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.PoolSpec": {
        "description": "PoolSpec is the caller-writable state of a Pool.",
        "properties": {
          "image": {
            "description": "The image: an artifact in Sylphx Artifacts, by digest, or `template:<name>`.",
            "type": "string"
          },
          "max_age": {
            "description": "Warm machines older than this are recycled; 5 minutes to 2 hours.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "shape": {
            "description": "The shape.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Shape"
          },
          "warm": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.PoolWarm",
            "description": "Warm machine bounds."
          }
        },
        "required": [
          "shape",
          "image",
          "warm"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.PoolStatus": {
        "description": "PoolStatus is the observed state of a Pool.",
        "properties": {
          "booting_machines": {
            "description": "Machines booting into the pool.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "warm_machines": {
            "description": "Booted, never-leased machines ready now.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.PoolWarm": {
        "description": "PoolWarm bounds a Pool's warm machines.",
        "properties": {
          "max": {
            "description": "Warm machines at most; at most 10 on free and 100 on Pro.",
            "format": "int32",
            "type": "integer"
          },
          "min": {
            "description": "Warm machines kept booted.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.PortVisibility": {
        "description": "PortVisibility is who can reach a lease port.",
        "enum": [
          "private",
          "public"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.ReadLeaseFileRequest": {
        "description": "The request of ReadLeaseFile.",
        "properties": {
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "path": {
            "description": "The absolute path in the guest.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "path"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ReadLeaseFileResponse": {
        "description": "The response of ReadLeaseFile.",
        "properties": {
          "content": {
            "contentEncoding": "base64",
            "description": "The file's bytes.",
            "type": "string"
          },
          "mode": {
            "description": "The file mode bits.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.Region": {
        "description": "Region is a rectangle in logical display pixels.",
        "properties": {
          "height": {
            "description": "Height.",
            "format": "int32",
            "type": "integer"
          },
          "width": {
            "description": "Width.",
            "format": "int32",
            "type": "integer"
          },
          "x": {
            "description": "Left edge.",
            "format": "int32",
            "type": "integer"
          },
          "y": {
            "description": "Top edge.",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "x",
          "y",
          "width",
          "height"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ReleaseLeaseControlRequest": {
        "description": "The request of ReleaseLeaseControl.",
        "properties": {
          "epoch": {
            "description": "The epoch AcquireLeaseControl returned.",
            "format": "int64",
            "type": "string"
          },
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          }
        },
        "required": [
          "name",
          "epoch"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ReleaseLeaseRequest": {
        "description": "The request of ReleaseLease.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "validate_only": {
            "description": "Validate without acting.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.RemoveLeaseFileRequest": {
        "description": "The request of RemoveLeaseFile.",
        "properties": {
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "path": {
            "description": "The absolute path in the guest.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "path"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.RemoveLeaseFileResponse": {
        "description": "The response of RemoveLeaseFile.",
        "properties": {},
        "type": "object"
      },
      "sylphx.sandboxes.v1.RenewLeaseRequest": {
        "description": "The request of RenewLease.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "ttl": {
            "description": "The new time to live from now.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate without acting.",
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "ttl"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.ResumeLeaseRequest": {
        "description": "The request of ResumeLease.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "validate_only": {
            "description": "Validate without acting.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.Screenshot": {
        "description": "Screenshot is an encoded capture.",
        "properties": {
          "capture_time": {
            "description": "When it was captured.",
            "format": "date-time",
            "type": "string"
          },
          "data": {
            "contentEncoding": "base64",
            "description": "The encoded image.",
            "type": "string"
          },
          "display_height": {
            "description": "The display's logical height.",
            "format": "int32",
            "type": "integer"
          },
          "display_width": {
            "description": "The display's logical width; divide to map image pixels to action\ncoordinates.",
            "format": "int32",
            "type": "integer"
          },
          "height": {
            "description": "Image height in pixels.",
            "format": "int32",
            "type": "integer"
          },
          "media_type": {
            "description": "`image/png`, `image/jpeg`, or `image/webp`.",
            "type": "string"
          },
          "width": {
            "description": "Image width in pixels.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ScreenshotAction": {
        "description": "ScreenshotAction captures the display into this action's result.",
        "properties": {
          "options": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ScreenshotOptions",
            "description": "How to encode it."
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ScreenshotOptions": {
        "description": "ScreenshotOptions says how a screenshot is encoded.",
        "properties": {
          "format": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ImageFormat",
            "description": "Default PNG."
          },
          "max_width": {
            "description": "Downscale to at most this width, keeping the aspect ratio; 0 keeps the\ndisplay size.",
            "format": "int32",
            "type": "integer"
          },
          "quality": {
            "description": "JPEG and WebP quality 1 to 100; default 80.",
            "format": "int32",
            "type": "integer"
          },
          "settle": {
            "description": "Wait this long after the last action before capturing, so the screen\nsettles; default 300 ms, at most 5 seconds.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ScrollAction": {
        "description": "ScrollAction scrolls at a position. Positive `delta_y` scrolls down,\npositive `delta_x` right.",
        "properties": {
          "delta_x": {
            "description": "Horizontal amount in `unit`.",
            "format": "int32",
            "type": "integer"
          },
          "delta_y": {
            "description": "Vertical amount in `unit`.",
            "format": "int32",
            "type": "integer"
          },
          "modifiers": {
            "description": "Keys held during the scroll, xdotool names.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "position": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Point",
            "description": "Where; unset scrolls at the current pointer position."
          },
          "unit": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ScrollUnit",
            "description": "Default CLICKS (wheel notches, Anthropic `scroll_amount`); PIXELS (OpenAI\n`scroll_x`/`scroll_y`) are converted at 100 pixels per notch on desktops."
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ScrollUnit": {
        "description": "ScrollUnit is the unit of a scroll amount.",
        "enum": [
          "clicks",
          "pixels"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.SetLeaseNetworkRequest": {
        "description": "The request of SetLeaseNetwork.",
        "properties": {
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "network": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseNetwork",
            "description": "The new outbound policy; replaces the old one whole."
          }
        },
        "required": [
          "name",
          "network"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.Shape": {
        "description": "A Shape is one entry of the platform's machine catalog: OS, size, the cell\ncapability it needs, and its lease bounds. The catalog is read-only; adding\na shape is a Release of the catalog.",
        "properties": {
          "capability": {
            "description": "The cell capability Placement matches, for example `kata` or `macos`.",
            "readOnly": true,
            "type": "string"
          },
          "disk_gib": {
            "description": "Disk in GiB.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "kinds": {
            "description": "The lease kinds this shape can serve.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseKind"
            },
            "readOnly": true,
            "type": "array"
          },
          "max_lease_duration": {
            "description": "The longest lease.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "readOnly": true,
            "type": "string"
          },
          "memory_mib": {
            "description": "Memory in MiB.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "min_lease_duration": {
            "description": "The shortest lease; 24 hours for macOS.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "`sandbox_shapes/{shape}`.",
            "type": "string"
          },
          "offered": {
            "description": "Whether the shape is sold now. A lease of an unsold shape is refused\nSHAPE_NOT_OFFERED.",
            "readOnly": true,
            "type": "boolean"
          },
          "os": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ShapeOs",
            "description": "The operating system.",
            "readOnly": true
          },
          "price_micros_per_second": {
            "description": "The list price of one second of this shape, in millionths of a US\ndollar; 0 for a class that is not priced. `spec.budget.max_cost_micros` is\nmeasured against it; the invoice is Sylphx Billing's.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`shp_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "vcpu_count": {
            "description": "vCPUs; for a whole host, its cores.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ShapeOs": {
        "description": "ShapeOs is the operating system of a shape.",
        "enum": [
          "linux",
          "macos"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.Snapshot": {
        "description": "A Snapshot is a lease's disk and image captured at one moment. A lease\ncreated with `source_snapshot` boots from it. Process memory is not\ncaptured.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/snapshots/{snapshot}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.SnapshotSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.SnapshotStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`snp_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.SnapshotSpec": {
        "description": "SnapshotSpec is the caller-writable state of a Snapshot.",
        "properties": {
          "include_memory": {
            "description": "Capture process memory too. Refused UNIMPLEMENTED until the microVM\nruntime exposes memory snapshots.",
            "type": "boolean",
            "x-sylphx-immutable": true
          },
          "retention": {
            "description": "Delete the snapshot after this long; default 7 days, at most 30 days.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "source_lease": {
            "description": "The running lease to capture.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          }
        },
        "required": [
          "source_lease"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.SnapshotState": {
        "description": "SnapshotState is the snapshot state machine.",
        "enum": [
          "creating",
          "ready",
          "failed",
          "deleting"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.SnapshotStatus": {
        "description": "SnapshotStatus is the observed state of a Snapshot.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "expire_time": {
            "description": "When the snapshot is deleted.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "image": {
            "description": "The source lease's image, by digest.",
            "readOnly": true,
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseKind",
            "description": "The source lease's kind.",
            "readOnly": true
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "shape": {
            "description": "The source lease's shape.",
            "readOnly": true,
            "type": "string"
          },
          "size_bytes": {
            "description": "Captured bytes.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.SnapshotState",
            "description": "The state machine.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.StreamRole": {
        "description": "StreamRole is what a stream token admits.",
        "enum": [
          "viewer",
          "controller"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.StreamSession": {
        "description": "StreamSession is how a browser or webview connects to a lease's display.\nThe token is short-lived, bound to the lease and its generation, and never\ncontains an Access key; stream traffic is never recorded or logged.",
        "properties": {
          "control_epoch": {
            "description": "For CONTROLLER: the control epoch the token is bound to.",
            "format": "int64",
            "type": "string"
          },
          "expire_time": {
            "description": "When the token stops admitting new connections.",
            "format": "date-time",
            "type": "string"
          },
          "ice_servers": {
            "description": "ICE servers, TURN credentials included, valid until `expire_time`.",
            "items": {
              "$ref": "#/components/schemas/sylphx.sandboxes.v1.IceServer"
            },
            "type": "array"
          },
          "lease_generation": {
            "description": "The lease generation the token is bound to.",
            "format": "int64",
            "type": "string"
          },
          "revoke_uri": {
            "description": "Revokes the token early: `POST` it with the token as bearer.",
            "type": "string"
          },
          "role": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.StreamRole",
            "description": "VIEWER (frames) or CONTROLLER (frames and input)."
          },
          "signaling_uri": {
            "description": "The WebRTC signaling WebSocket; send the token as the first message.",
            "type": "string"
          },
          "token": {
            "description": "The stream token.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "viewer_uri": {
            "description": "An embeddable page (web, Telegram Mini App webview) that connects on\nload; the token rides in the URL fragment and never reaches a server log.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "vnc_uri": {
            "description": "The noVNC/websockify fallback WebSocket for networks that block WebRTC.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.TokenScope": {
        "description": "TokenScope is what a lease token admits.",
        "enum": [
          "guest",
          "ports",
          "cdp",
          "computer"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.TypeAction": {
        "description": "TypeAction types Unicode text, including CJK and emoji.",
        "properties": {
          "keystroke_delay": {
            "description": "Delay between keystrokes; default 12 ms.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "text": {
            "description": "The text; at most 64 KiB.",
            "type": "string"
          }
        },
        "required": [
          "text"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.UpdatePoolRequest": {
        "description": "The request of UpdatePool.",
        "properties": {
          "allow_missing": {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "pool": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Pool",
            "description": "The pool to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "pool"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.UpdateVolumeRequest": {
        "description": "The request of UpdateVolume.",
        "properties": {
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          },
          "volume": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Volume",
            "description": "The volume to update; `name` identifies it."
          }
        },
        "required": [
          "volume"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.Volume": {
        "description": "A Volume is a persistent disk scoped to one environment, encrypted at rest\nunless its class is `local`, attached by name when a lease is created. It has one writer: the lease it is\nattached to, fenced by that lease's generation. It survives the lease's end\nand is destroyed only by Delete.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/volumes/{volume}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.VolumeSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.VolumeStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`vol_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.VolumeMount": {
        "description": "VolumeMount attaches a Volume to a lease.",
        "properties": {
          "mount_path": {
            "description": "The absolute guest path; default `/home/user/volumes/{volume id}`.",
            "type": "string"
          },
          "read_only": {
            "description": "Mount read-only.",
            "type": "boolean"
          },
          "volume": {
            "description": "The volume.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Volume"
          }
        },
        "required": [
          "volume"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.VolumeSpec": {
        "description": "VolumeSpec is the caller-writable state of a Volume.",
        "properties": {
          "region": {
            "description": "The region whose Cell holds the volume; default the project's home\nregion. A lease mounts the volume only in the same region.",
            "type": "string",
            "x-sylphx-immutable": true
          },
          "size_gib": {
            "description": "Size in GiB, 1 to 1024; it may grow and never shrink. A `local` volume\nnever grows.",
            "format": "int32",
            "type": "integer"
          },
          "storage_class": {
            "description": "The storage class; unset means `standard`.\n`standard`: replicated network storage, encrypted at rest with its own\nkey, attachable on any node.\n`local`: fast node-local storage, not replicated, for warm build\nworkspaces. The guest gets it as an ext4 filesystem it formats on first\nuse. It pins every lease that attaches it to its node, is not encrypted at\nrest, cannot grow, cannot be mounted read-only, and is lost with its node:\nkeep only caches on it.",
            "type": "string",
            "x-sylphx-immutable": true
          }
        },
        "required": [
          "size_gib"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.VolumeState": {
        "description": "VolumeState is the volume state machine.",
        "enum": [
          "creating",
          "available",
          "attached",
          "deleting",
          "failed"
        ],
        "type": "string"
      },
      "sylphx.sandboxes.v1.VolumeStatus": {
        "description": "VolumeStatus is the observed state of a Volume.",
        "properties": {
          "attached_generation": {
            "description": "The generation of `attached_lease` that holds the write fence.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "attached_lease": {
            "description": "The lease the volume is attached to.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "encrypted": {
            "description": "Whether the volume is encrypted at rest with its own key: true for\n`standard`, false for `local`.",
            "readOnly": true,
            "type": "boolean"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.VolumeState",
            "description": "The state machine.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.WaitAction": {
        "description": "WaitAction sleeps.",
        "properties": {
          "duration": {
            "description": "How long; at most 30 seconds.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "duration"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.WriteLeaseFileRequest": {
        "description": "The request of WriteLeaseFile.",
        "properties": {
          "append": {
            "description": "Append `content` to the file (created when absent) instead of replacing\nit, so a file larger than one call uploads in chunks.",
            "type": "boolean"
          },
          "content": {
            "contentEncoding": "base64",
            "description": "The file's bytes.",
            "type": "string"
          },
          "mode": {
            "description": "The file mode bits; default 0644.",
            "format": "int32",
            "type": "integer"
          },
          "name": {
            "description": "The name of the lease.",
            "type": "string",
            "x-sylphx-resource-reference": "sandboxes.sylphx.com/Lease"
          },
          "path": {
            "description": "The absolute path in the guest.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "path",
          "content"
        ],
        "type": "object"
      },
      "sylphx.sandboxes.v1.WriteLeaseFileResponse": {
        "description": "The response of WriteLeaseFile.",
        "properties": {
          "size_bytes": {
            "description": "Bytes written.",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.sandboxes.v1.ZoomAction": {
        "description": "ZoomAction captures one region of the display.",
        "properties": {
          "options": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.ScreenshotOptions",
            "description": "How to encode it; the region is scaled to `options.max_width` when set."
          },
          "region": {
            "$ref": "#/components/schemas/sylphx.sandboxes.v1.Region",
            "description": "The region, in display pixels."
          }
        },
        "required": [
          "region"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.AccessSecretVersionRequest": {
        "description": "The request of AccessSecretVersion.",
        "properties": {
          "name": {
            "description": "The name of the secret version to read.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretVersion"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.AccessSecretVersionResponse": {
        "description": "The response of AccessSecretVersion.",
        "properties": {
          "name": {
            "description": "The secret version read.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretVersion"
          },
          "payload": {
            "contentEncoding": "base64",
            "description": "The value.",
            "type": "string",
            "x-sylphx-sensitive": true
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.CommitProfileRequest": {
        "description": "The request of CommitProfile.",
        "properties": {
          "attachment": {
            "description": "The `attachment` OpenProfile returned with WRITE_BACK.",
            "type": "string"
          },
          "name": {
            "description": "The profile to write back.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/Profile"
          },
          "state": {
            "contentEncoding": "base64",
            "description": "The whole state to write, in the profile kind's form, at most 2 MiB.",
            "type": "string",
            "x-sylphx-sensitive": true
          }
        },
        "required": [
          "name",
          "attachment",
          "state"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.CommitProfileResponse": {
        "description": "The response of CommitProfile.",
        "properties": {
          "conflict": {
            "description": "True when another write landed after this attachment's base: the version\nholds both, merged site by site with this write winning the sites it\nchanged.",
            "type": "boolean"
          },
          "profile_version": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileVersion",
            "description": "The version written."
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.CreateProfileRequest": {
        "description": "The request of CreateProfile.",
        "properties": {
          "parent": {
            "description": "The environment to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/Profile"
          },
          "profile": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.Profile",
            "description": "The profile to create; only spec is read."
          },
          "profile_id": {
            "description": "The id of the new profile, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "profile"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.CreateSecretBindingRequest": {
        "description": "The request of CreateSecretBinding.",
        "properties": {
          "parent": {
            "description": "The environment to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretBinding"
          },
          "secret_binding": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.SecretBinding",
            "description": "The secret binding to create; only spec and caller-writable metadata are read."
          },
          "secret_binding_id": {
            "description": "The id of the new secret binding, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "secret_binding"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.CreateSecretRequest": {
        "description": "The request of CreateSecret.",
        "properties": {
          "parent": {
            "description": "The environment to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/Secret"
          },
          "secret": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.Secret",
            "description": "The secret to create; only spec and caller-writable metadata are read."
          },
          "secret_id": {
            "description": "The id of the new secret, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "secret"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.CreateSecretVersionRequest": {
        "description": "The request of CreateSecretVersion.",
        "properties": {
          "parent": {
            "description": "The secret to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretVersion"
          },
          "secret_version": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.SecretVersion",
            "description": "The secret version to create; only spec and caller-writable metadata are read."
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "secret_version"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.DeleteProfileRequest": {
        "description": "The request of DeleteProfile.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also destroy every version; without it a profile with versions fails\nwith INVALID_STATE.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the profile to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/Profile"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.DeleteSecretBindingRequest": {
        "description": "The request of DeleteSecretBinding.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the secret binding to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretBinding"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.DeleteSecretRequest": {
        "description": "The request of DeleteSecret.",
        "properties": {
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also delete every child Resource; without it a parent with children\nfails with FAILED_PRECONDITION.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the secret to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/Secret"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.DestroySecretVersionRequest": {
        "description": "The request of DestroySecretVersion.",
        "properties": {
          "etag": {
            "description": "Destroy only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the secret version to destroy.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretVersion"
          },
          "validate_only": {
            "description": "Validate without changing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.DisableSecretVersionRequest": {
        "description": "The request of DisableSecretVersion.",
        "properties": {
          "etag": {
            "description": "Disable only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the secret version to disable.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretVersion"
          },
          "validate_only": {
            "description": "Validate without changing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.EgressInjection": {
        "description": "EgressInjection has the Cell's injector add the value to outbound\nrequests; the workload never sees it.",
        "properties": {
          "header": {
            "description": "The request header to set, for example `Authorization`.",
            "type": "string"
          },
          "header_template": {
            "description": "The header value, with `{value}` standing for the Secret, for example\n`Bearer {value}`; default `{value}`.",
            "type": "string"
          },
          "hosts": {
            "description": "The hosts the value may be sent to, for example `api.example.com`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "hosts",
          "header"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.EnableSecretVersionRequest": {
        "description": "The request of EnableSecretVersion.",
        "properties": {
          "etag": {
            "description": "Enable only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the secret version to enable.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretVersion"
          },
          "validate_only": {
            "description": "Validate without changing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.EnvVarDelivery": {
        "description": "EnvVarDelivery delivers a value as an environment variable.",
        "properties": {
          "variable": {
            "description": "The variable name, for example `DATABASE_PASSWORD`.",
            "type": "string"
          }
        },
        "required": [
          "variable"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.FileDelivery": {
        "description": "FileDelivery delivers a value as a file in memory-backed storage.",
        "properties": {
          "path": {
            "description": "The absolute path, for example `/run/secrets/tls.key`.",
            "type": "string"
          }
        },
        "required": [
          "path"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.GetProfileRequest": {
        "description": "The request of GetProfile.",
        "properties": {
          "name": {
            "description": "The name of the profile to get.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/Profile"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.GetProfileVersionRequest": {
        "description": "The request of GetProfileVersion.",
        "properties": {
          "name": {
            "description": "The name of the profile version to get.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/ProfileVersion"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.GetSecretBindingRequest": {
        "description": "The request of GetSecretBinding.",
        "properties": {
          "name": {
            "description": "The name of the secret binding to get.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretBinding"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.GetSecretRequest": {
        "description": "The request of GetSecret.",
        "properties": {
          "name": {
            "description": "The name of the secret to get.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/Secret"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.GetSecretVersionRequest": {
        "description": "The request of GetSecretVersion.",
        "properties": {
          "name": {
            "description": "The name of the secret version to get.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretVersion"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.ListProfileVersionsRequest": {
        "description": "The request of ListProfileVersions.",
        "properties": {
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The profile whose versions to list.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/ProfileVersion"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.ListProfileVersionsResponse": {
        "description": "The response of ListProfileVersions.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "profile_versions": {
            "description": "The page, newest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileVersion"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.ListProfilesRequest": {
        "description": "The request of ListProfiles.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/Profile"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.ListProfilesResponse": {
        "description": "The response of ListProfiles.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "profiles": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.secrets.v1.Profile"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.ListSecretBindingsRequest": {
        "description": "The request of ListSecretBindings.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretBinding"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.ListSecretBindingsResponse": {
        "description": "The response of ListSecretBindings.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "secret_bindings": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.secrets.v1.SecretBinding"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.ListSecretVersionsRequest": {
        "description": "The request of ListSecretVersions.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The secret to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretVersion"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.ListSecretVersionsResponse": {
        "description": "The response of ListSecretVersions.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "secret_versions": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.secrets.v1.SecretVersion"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.ListSecretsRequest": {
        "description": "The request of ListSecrets.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The environment to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/Secret"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.ListSecretsResponse": {
        "description": "The response of ListSecrets.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "secrets": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.secrets.v1.Secret"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.OpenProfileRequest": {
        "description": "The request of OpenProfile.",
        "properties": {
          "context": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Who mounts it, for the audit trail: for example `run`, `step`, `member`.\nAt most 16 entries; keys and values are names, never values.",
            "type": "object"
          },
          "mode": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileMountMode",
            "description": "READ_ONLY (the default) or WRITE_BACK."
          },
          "name": {
            "description": "The profile to mount.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/Profile"
          },
          "ttl": {
            "description": "How long a WRITE_BACK attachment may commit; default 1 hour, at most 12\nhours. A lost session cannot write back after it.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "version": {
            "description": "A version to mount; unset mounts the latest.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/ProfileVersion"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.OpenProfileResponse": {
        "description": "The response of OpenProfile.",
        "properties": {
          "attachment": {
            "description": "The attachment this mount is recorded as; `:commit` takes it.",
            "type": "string"
          },
          "expire_time": {
            "description": "When a WRITE_BACK attachment stops accepting commits.",
            "format": "date-time",
            "type": "string"
          },
          "mode": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileMountMode",
            "description": "The mode granted."
          },
          "sites": {
            "description": "The sites in the state and when each last changed.",
            "items": {
              "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileSite"
            },
            "type": "array"
          },
          "state": {
            "contentEncoding": "base64",
            "description": "The profile's state: for a `browser` profile the Playwright\n`storageState` JSON document, for a `computer` profile the archive of its\ndeclared paths. Empty when the profile has no version yet.",
            "type": "string",
            "x-sylphx-sensitive": true
          },
          "version": {
            "description": "The version mounted; empty when the profile has none yet.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/ProfileVersion"
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.Profile": {
        "description": "A Profile is sign-in state a sandbox session mounts: a browser's cookies\nand storage per site, or a computer's application sign-ins. It is\nsecret-like: every version is envelope-encrypted under a data key of its\nown profile, no read method returns a value, and mounting is a separate,\naudited permission (`secrets:mount`) granted per principal on the profile.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/profiles/{profile}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`pfl_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.ProfileGrant": {
        "description": "A ProfileGrant lets one principal mount a profile in a mode.",
        "properties": {
          "mode": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileMountMode",
            "description": "The most it may mount: READ_ONLY, or WRITE_BACK (which includes\nREAD_ONLY)."
          },
          "principal": {
            "description": "The Access principal, as its keys carry it (for example a service\naccount's id).",
            "type": "string"
          }
        },
        "required": [
          "principal",
          "mode"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.ProfileKind": {
        "description": "ProfileKind is what a Profile holds.",
        "enum": [
          "browser",
          "computer"
        ],
        "type": "string"
      },
      "sylphx.secrets.v1.ProfileMountMode": {
        "description": "ProfileMountMode is how a session mounts a Profile.",
        "enum": [
          "read_only",
          "write_back"
        ],
        "type": "string"
      },
      "sylphx.secrets.v1.ProfileSite": {
        "description": "A ProfileSite names one site of a profile, never its values.",
        "properties": {
          "site": {
            "description": "The registrable domain (eTLD+1), for example `example.com`; for a\n`computer` profile, one declared path.",
            "readOnly": true,
            "type": "string"
          },
          "update_time": {
            "description": "When this site's record last changed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.ProfileSpec": {
        "description": "ProfileSpec is the caller-writable state of a Profile.",
        "properties": {
          "grants": {
            "description": "Who may mount it and how. A principal with no grant cannot mount it,\nwhatever its scopes.",
            "items": {
              "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileGrant"
            },
            "type": "array"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileKind",
            "description": "What the profile holds.",
            "x-sylphx-immutable": true
          },
          "paths": {
            "description": "For a `computer` profile: the paths under the sandbox's home directory\nits archive holds, for example `.config/app`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "kind"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.ProfileStatus": {
        "description": "ProfileStatus is the observed state of a Profile.",
        "properties": {
          "conditions": {
            "description": "Ready.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "latest_version": {
            "description": "The newest version; empty until the first write-back.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/ProfileVersion"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "sites": {
            "description": "The sites of the latest version and when each last changed.",
            "items": {
              "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileSite"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.ProfileVersion": {
        "description": "A ProfileVersion is one immutable, encrypted state of a Profile.",
        "properties": {
          "base_version": {
            "description": "The version the write was based on; empty for a first write.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/ProfileVersion"
          },
          "conflict_version": {
            "description": "Set when another version landed after the base: that version, whose\nsites this one kept where this write did not change them.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/ProfileVersion"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`…/profiles/{profile}/profile_versions/{profile_version}`; the id is the\nversion number, from 1.",
            "type": "string"
          },
          "sites": {
            "description": "The sites it holds and when each last changed.",
            "items": {
              "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileSite"
            },
            "readOnly": true,
            "type": "array"
          },
          "size_bytes": {
            "description": "The size of the state, in bytes.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`pflv_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.Secret": {
        "description": "A Secret is a named, versioned value that a third party accepts only as a\nbearer string. Its versions hold the values; its bindings deliver them.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/secrets/{secret}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.SecretSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.SecretStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`sec_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.SecretBinding": {
        "description": "A SecretBinding delivers a Secret's value to one workload: as an\nenvironment variable, as a file, or by egress injection, where the platform\nadds the value to outgoing requests to allowlisted hosts and the workload\nnever sees it. Releases pin bindings, never values.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/secret_bindings/{secret_binding}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.SecretBindingSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.SecretBindingStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`scb_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.SecretBindingSpec": {
        "description": "SecretBindingSpec is the caller-writable state of a SecretBinding.",
        "properties": {
          "egress": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.EgressInjection",
            "description": "By egress injection into outgoing requests."
          },
          "env_var": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.EnvVarDelivery",
            "description": "As an environment variable."
          },
          "file": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.FileDelivery",
            "description": "As a file."
          },
          "secret": {
            "description": "The Secret to deliver, in the same environment.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/Secret"
          },
          "version": {
            "description": "A pinned version; unset delivers the Secret's latest enabled version.",
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretVersion"
          },
          "workload": {
            "description": "The name of the Resource that consumes the value, for example a Hosting\nservice.",
            "type": "string"
          }
        },
        "required": [
          "secret",
          "workload"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.SecretBindingStatus": {
        "description": "SecretBindingStatus is the observed state of a SecretBinding.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "resolved_version": {
            "description": "The version the binding delivers now.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretVersion"
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.SecretSpec": {
        "description": "SecretSpec is the caller-writable state of a Secret.",
        "properties": {
          "deletion_protection": {
            "description": "While true, Delete fails with DELETION_PROTECTED. Default true.",
            "type": "boolean"
          },
          "encryption_key": {
            "description": "The ENCRYPT Key the values are envelope-encrypted with; unset means the\nenvironment's default Key.",
            "type": "string",
            "x-sylphx-immutable": true,
            "x-sylphx-resource-reference": "keys.sylphx.com/Key"
          },
          "rotation_period": {
            "description": "How often the value should be rotated; the Secret reports Ready=FALSE\nwith reason `RotationDue` once the latest version is older.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.SecretStatus": {
        "description": "SecretStatus is the observed state of a Secret.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "latest_version": {
            "description": "The newest enabled version; what a binding without a pinned version\ndelivers.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "secrets.sylphx.com/SecretVersion"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "rotation_due_time": {
            "description": "When the latest version should be rotated.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.secrets.v1.SecretVersion": {
        "description": "A SecretVersion is one immutable value of a Secret. The value is\nwrite-only: Create reads it, and no response carries it except\nAccessSecretVersion.",
        "properties": {
          "destroy_time": {
            "description": "When the value was destroyed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`…/secrets/{secret}/secret_versions/{secret_version}`; the id is the\nversion number, from 1.",
            "type": "string"
          },
          "payload": {
            "contentEncoding": "base64",
            "description": "The value, at most 64 KiB. Write-only.",
            "type": "string",
            "writeOnly": true,
            "x-sylphx-sensitive": true
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.SecretVersionState",
            "description": "The version's lifecycle state.",
            "readOnly": true
          },
          "uid": {
            "description": "`scv_<cell><ulid>`.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "payload"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.SecretVersionState": {
        "description": "SecretVersionState is the lifecycle state of a SecretVersion.",
        "enum": [
          "enabled",
          "disabled",
          "destroyed"
        ],
        "type": "string"
      },
      "sylphx.secrets.v1.UpdateProfileRequest": {
        "description": "The request of UpdateProfile.",
        "properties": {
          "profile": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.Profile",
            "description": "The profile to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write (`spec.grants`, `spec.paths`); unset writes both.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "profile"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.UpdateSecretBindingRequest": {
        "description": "The request of UpdateSecretBinding.",
        "properties": {
          "secret_binding": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.SecretBinding",
            "description": "The secret binding to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "secret_binding"
        ],
        "type": "object"
      },
      "sylphx.secrets.v1.UpdateSecretRequest": {
        "description": "The request of UpdateSecret.",
        "properties": {
          "secret": {
            "$ref": "#/components/schemas/sylphx.secrets.v1.Secret",
            "description": "The secret to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "secret"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.AddDistributedRunShardsRequest": {
        "description": "The request of AddDistributedRunShards.",
        "properties": {
          "close": {
            "description": "Close the manifest: the run ends once its shards are done.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the distributed run; its manifest must be open.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/DistributedRun"
          },
          "shards": {
            "description": "The shards to append.",
            "items": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.ShardInput"
            },
            "type": "array"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.AttemptOutcome": {
        "description": "How one invocation attempt ended (workflows-on-temporal.md §7.3).",
        "enum": [
          "invoked",
          "protocol_error",
          "rejected",
          "retryable",
          "unreached",
          "unknown",
          "unsigned"
        ],
        "type": "string"
      },
      "sylphx.workflows.v1.BatchPosition": {
        "description": "A child Run's place in its batch.",
        "properties": {
          "index": {
            "description": "Zero-based index of this child.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "parent_run": {
            "description": "The parent batch Run.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Run"
          },
          "total_count": {
            "description": "Number of children in the batch.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.CalendarSpec": {
        "description": "A cron calendar.",
        "properties": {
          "cron": {
            "description": "A 5-field cron expression, for example `0 3 * * *`.",
            "type": "string"
          },
          "time_zone": {
            "description": "IANA time zone; default `UTC`.",
            "type": "string"
          }
        },
        "required": [
          "cron"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.CancelDistributedRunRequest": {
        "description": "The request of CancelDistributedRun.",
        "properties": {
          "name": {
            "description": "The name of the distributed run.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/DistributedRun"
          },
          "reason": {
            "description": "Why the run is cancelled.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.CancelJobRunRequest": {
        "description": "The request of CancelJobRun.",
        "properties": {
          "name": {
            "description": "The name of the job run.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/JobRun"
          },
          "reason": {
            "description": "Why the run is cancelled.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.CancelRunRequest": {
        "description": "The request of CancelRun.",
        "properties": {
          "name": {
            "description": "The name of the run.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Run"
          },
          "reason": {
            "description": "Why the Run is cancelled.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.CreateDistributedJobRequest": {
        "description": "The request of CreateDistributedJob.",
        "properties": {
          "distributed_job": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedJob",
            "description": "The distributed job to create; only caller-writable fields are read."
          },
          "distributed_job_id": {
            "description": "The distributed job id, the final name segment: `[a-z][a-z0-9-]{0,62}`.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/DistributedJob"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "distributed_job"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.CreateDistributedRunRequest": {
        "description": "The request of CreateDistributedRun.",
        "properties": {
          "distributed_run": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedRun",
            "description": "The run to start: `args`, `env`, `shards` and `open_manifest`."
          },
          "distributed_run_id": {
            "description": "The run id, the final name segment; the server assigns one when empty.",
            "type": "string"
          },
          "parent": {
            "description": "The distributed job to run.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/DistributedRun"
          },
          "validate_only": {
            "description": "Validate and return the result without starting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "distributed_run"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.CreateJobRequest": {
        "description": "The request of CreateJob.",
        "properties": {
          "job": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.Job",
            "description": "The job to create; only caller-writable fields are read."
          },
          "job_id": {
            "description": "The job id, the final name segment: `[a-z0-9-]{1,63}`.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Job"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "job"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.CreateJobRunRequest": {
        "description": "The request of CreateJobRun.",
        "properties": {
          "job_run": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.JobRun",
            "description": "The run to start: `args` and `env` override the Job's for this run."
          },
          "job_run_id": {
            "description": "The run id, the final name segment; the server assigns one when empty.",
            "type": "string"
          },
          "parent": {
            "description": "The job to run.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/JobRun"
          },
          "validate_only": {
            "description": "Validate and return the result without starting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "job_run"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.CreateRunRequest": {
        "description": "The request of CreateRun.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Run"
          },
          "run": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.Run",
            "description": "The run to create; only caller-writable fields are read."
          },
          "run_id": {
            "description": "The run id, the final name segment; the server assigns one when empty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "run"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.CreateScheduleRequest": {
        "description": "The request of CreateSchedule.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Schedule"
          },
          "schedule": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.Schedule",
            "description": "The schedule to create; only caller-writable fields are read."
          },
          "schedule_id": {
            "description": "The schedule id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "parent",
          "schedule"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.CreateWorkflowRequest": {
        "description": "The request of CreateWorkflow.",
        "properties": {
          "parent": {
            "description": "The parent to create in.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Workflow"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          },
          "workflow": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.Workflow",
            "description": "The workflow to create; only caller-writable fields are read."
          },
          "workflow_id": {
            "description": "The workflow id, the final name segment; the server assigns one when\nempty.",
            "type": "string"
          }
        },
        "required": [
          "parent",
          "workflow"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.DeleteDistributedJobRequest": {
        "description": "The request of DeleteDistributedJob.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the distributed job does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also cancel active runs; without it a job with an active run fails with\nINVALID_STATE.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the distributed job to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/DistributedJob"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.DeleteJobRequest": {
        "description": "The request of DeleteJob.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the job does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also cancel active runs and delete Schedules targeting the job; without\nit a job with an active run or a Schedule fails with INVALID_STATE.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the job to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Job"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.DeleteScheduleRequest": {
        "description": "The request of DeleteSchedule.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the schedule does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the schedule to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Schedule"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.DeleteWorkflowRequest": {
        "description": "The request of DeleteWorkflow.",
        "properties": {
          "allow_missing": {
            "description": "Succeed when the workflow does not exist.",
            "type": "boolean"
          },
          "etag": {
            "description": "Delete only if the current etag matches.",
            "type": "string"
          },
          "force": {
            "description": "Also cancel and delete the Workflow's Runs and Schedules; without it a\nWorkflow with open Runs or Schedules fails with INVALID_STATE.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the workflow to delete.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Workflow"
          },
          "validate_only": {
            "description": "Validate without deleting anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.DistributedJob": {
        "description": "A DistributedJob runs one container image on many workers at once\n(run-distributed-jobs.md §4). A run splits its work into shards that\nworkers lease from a queue; the worker pool grows and shrinks with the\ncapacity Kueue admits, and a preempted shard goes back to the queue.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/distributed_jobs/{distributed_job}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedJobSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedJobStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`djob_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.DistributedJobSpec": {
        "description": "DistributedJobSpec is the caller-writable state of a DistributedJob.",
        "properties": {
          "checkpoint_uri": {
            "description": "`data://<bucket>/<prefix>/`: checkpoints go under `<run>/<shard>/`.",
            "type": "string"
          },
          "max_failed_shards": {
            "description": "Failed shards the run tolerates before it fails; default 0.",
            "format": "int64",
            "type": "string"
          },
          "output_uri": {
            "description": "`data://<bucket>/<prefix>/`: outputs go under `<run>/<shard>/`.",
            "type": "string"
          },
          "run_timeout": {
            "description": "The whole run's deadline; default 48h.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "scale": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.WorkerScale",
            "description": "Elastic bounds of the worker pool."
          },
          "scratch_gib": {
            "description": "Local scratch disk at `/scratch` per worker, GiB; 0 is none.",
            "format": "int32",
            "type": "integer"
          },
          "shard_count": {
            "description": "A run that brings no shards of its own gets this many index-only shards.",
            "format": "int64",
            "type": "string"
          },
          "shard_retries": {
            "description": "Attempts a shard gets after a failure; a preemption is not one. Default 3.",
            "format": "int32",
            "type": "integer"
          },
          "shard_timeout": {
            "description": "The longest one lease may live without the shard ending; default 30m.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "worker": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.JobSpec",
            "description": "The worker container: its image, command, env and instance type.\n`timeout` is the longest one worker lives, so the pool turns over;\n`max_retries` and `concurrency` do not apply."
          },
          "worker_class": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.WorkerClass",
            "description": "Price and preemption class; default scavenger."
          }
        },
        "required": [
          "worker"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.DistributedJobStatus": {
        "description": "DistributedJobStatus is the observed state of a DistributedJob.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.DistributedRun": {
        "description": "A DistributedRun is one start of a DistributedJob: a queue of shards and\nthe workers that drain it.",
        "properties": {
          "args": {
            "description": "Arguments of every worker of this run (the job's when empty).",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "create_time": {
            "description": "When the run was accepted.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "end_time": {
            "description": "When the run closed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment overrides of this run.",
            "type": "object",
            "x-sylphx-immutable": true
          },
          "job_generation": {
            "description": "The DistributedJob generation the run pinned.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "manifest_open": {
            "description": "Whether more shards may still be added (`:addShards`).",
            "readOnly": true,
            "type": "boolean"
          },
          "message": {
            "description": "Why the run failed or was refused, when it did.",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/distributed_jobs/{distributed_job}/distributed_runs/{distributed_run}`.",
            "type": "string"
          },
          "open_manifest": {
            "description": "Keep the manifest open: `:addShards` appends until it is closed.",
            "type": "boolean",
            "writeOnly": true
          },
          "shard_counts": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.ShardCounts",
            "description": "Shards by state.",
            "readOnly": true
          },
          "shards": {
            "description": "The run's own shards (the customer's planner output); without them the\njob's `shard_count` makes index-only shards.",
            "items": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.ShardInput"
            },
            "type": "array",
            "writeOnly": true
          },
          "start_time": {
            "description": "When the first worker started.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedRunState",
            "description": "The run's lifecycle state.",
            "readOnly": true
          },
          "uid": {
            "description": "`drun_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "usage": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedRunUsage",
            "description": "Metered usage across workers.",
            "readOnly": true
          },
          "worker_counts": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.WorkerCounts",
            "description": "Workers by state.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.DistributedRunState": {
        "description": "The lifecycle state of a DistributedRun.",
        "enum": [
          "queued",
          "running",
          "draining",
          "succeeded",
          "failed",
          "cancelled",
          "timed_out"
        ],
        "type": "string"
      },
      "sylphx.workflows.v1.DistributedRunUsage": {
        "description": "Metered usage of a DistributedRun.",
        "properties": {
          "instance_type": {
            "description": "The instance type the workers ran on.",
            "readOnly": true,
            "type": "string"
          },
          "worker_class": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.WorkerClass",
            "description": "The price class the workers ran in.",
            "readOnly": true
          },
          "worker_duration": {
            "description": "Summed worker run time from container start to exit.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.FireOutcome": {
        "description": "What one Schedule fire did.",
        "enum": [
          "started",
          "skipped",
          "buffered"
        ],
        "type": "string"
      },
      "sylphx.workflows.v1.GetDistributedJobRequest": {
        "description": "The request of GetDistributedJob.",
        "properties": {
          "name": {
            "description": "The name of the distributed job to get.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/DistributedJob"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.GetDistributedRunRequest": {
        "description": "The request of GetDistributedRun.",
        "properties": {
          "name": {
            "description": "The name of the distributed run to get.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/DistributedRun"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.GetJobRequest": {
        "description": "The request of GetJob.",
        "properties": {
          "name": {
            "description": "The name of the job to get.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Job"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.GetJobRunRequest": {
        "description": "The request of GetJobRun.",
        "properties": {
          "name": {
            "description": "The name of the job run to get.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/JobRun"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.GetRunRequest": {
        "description": "The request of GetRun.",
        "properties": {
          "name": {
            "description": "The name of the run to get.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Run"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.GetScheduleRequest": {
        "description": "The request of GetSchedule.",
        "properties": {
          "name": {
            "description": "The name of the schedule to get.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Schedule"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.GetWorkflowRequest": {
        "description": "The request of GetWorkflow.",
        "properties": {
          "name": {
            "description": "The name of the workflow to get.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Workflow"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.IntervalSpec": {
        "description": "A fixed interval.",
        "properties": {
          "every": {
            "description": "The period, 1s to 365d.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "offset": {
            "description": "Phase offset within each period.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "every"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.Job": {
        "description": "A Job runs a container to completion: the project's image, a command, an\nexit status, logs, and metered usage (docs/services/workflows/jobs.md). It\ntakes no HTTP handler and no worker. A Schedule may target it; every start\nis a JobRun.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/jobs/{job}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.JobSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.JobStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`job_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.JobConcurrency": {
        "description": "What a Job start does while one of its runs is active.",
        "enum": [
          "forbid",
          "queue",
          "allow"
        ],
        "type": "string"
      },
      "sylphx.workflows.v1.JobHandler": {
        "description": "A container that handles a Workflow's invocations.",
        "properties": {
          "command": {
            "description": "The entrypoint; empty keeps the image's.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "image": {
            "description": "The image reference.",
            "type": "string"
          }
        },
        "required": [
          "image"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.JobLogLine": {
        "description": "One line a JobRun's container wrote.",
        "properties": {
          "attempt": {
            "description": "The attempt that wrote it, from 1.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "stream": {
            "description": "`stdout` or `stderr`.",
            "readOnly": true,
            "type": "string"
          },
          "text": {
            "description": "The line, without its trailing newline.",
            "readOnly": true,
            "type": "string"
          },
          "write_time": {
            "description": "When the line was written.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.JobRun": {
        "description": "A JobRun is one start of a Job: queued until the environment's quota admits\nit, then one attempt per try until an exit of 0, the retries run out, the\ndeadline passes, or it is cancelled.",
        "properties": {
          "args": {
            "description": "Arguments of this run (the Job's when empty).",
            "items": {
              "type": "string"
            },
            "type": "array",
            "x-sylphx-immutable": true
          },
          "attempt_count": {
            "description": "Attempts made so far.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "create_time": {
            "description": "When the run was accepted.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "end_time": {
            "description": "When the run closed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment overrides of this run.",
            "type": "object",
            "x-sylphx-immutable": true
          },
          "exit_code": {
            "description": "The last attempt's exit code, once it exited.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "job_generation": {
            "description": "The Job generation the run pinned.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "message": {
            "description": "Why the run failed or was refused, when it did.",
            "readOnly": true,
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/jobs/{job}/job_runs/{job_run}`.",
            "type": "string"
          },
          "resolved_image": {
            "description": "The image digest the run executes.",
            "readOnly": true,
            "type": "string"
          },
          "schedule_fire": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.ScheduleFireRef",
            "description": "Set when a Schedule fire started the run.",
            "readOnly": true
          },
          "schedule_time": {
            "description": "Start no earlier than this: set it directly, or through `start_delay`;\nat most 365 days ahead. A run cancelled before then makes no attempt.",
            "format": "date-time",
            "type": "string"
          },
          "start_delay": {
            "description": "Start no earlier than this long after the request.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string",
            "writeOnly": true
          },
          "start_time": {
            "description": "When the first attempt started.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.JobRunState",
            "description": "The run's lifecycle state.",
            "readOnly": true
          },
          "termination_reason": {
            "description": "Why the last attempt ended other than by exiting, for example\n`OOMKilled` or `Evicted`.",
            "readOnly": true,
            "type": "string"
          },
          "uid": {
            "description": "`jrun_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "usage": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.JobRunUsage",
            "description": "Metered usage across attempts.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.JobRunState": {
        "description": "The lifecycle state of a JobRun.",
        "enum": [
          "queued",
          "running",
          "succeeded",
          "failed",
          "cancelled",
          "timed_out"
        ],
        "type": "string"
      },
      "sylphx.workflows.v1.JobRunUsage": {
        "description": "Metered usage of a JobRun.",
        "properties": {
          "billed_duration": {
            "description": "Summed wall time of every attempt from start to exit; billed as this\nduration on `instance_type` (`workflows.job.seconds`).",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "readOnly": true,
            "type": "string"
          },
          "instance_type": {
            "description": "The instance type the attempts ran on.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.JobSpec": {
        "description": "JobSpec is the caller-writable state of a Job.",
        "properties": {
          "args": {
            "description": "Arguments; a run may replace them.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "build": {
            "description": "A build the project declares: its latest built image, in place of the\nservice's; the image needs no running service of its own. Exclusive with\n`image`.",
            "type": "string"
          },
          "command": {
            "description": "The entrypoint; empty keeps the image's.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "concurrency": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.JobConcurrency",
            "description": "What a start does while a run is active; default forbid."
          },
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment overrides on top of the service's env and Secret bindings.",
            "type": "object"
          },
          "image": {
            "description": "A digest-pinned image from this org's Artifacts, in place of the\nservice's image. Exclusive with `build`.",
            "type": "string"
          },
          "instance_type": {
            "description": "A Hosting instance type; default `standard`.",
            "type": "string"
          },
          "max_retries": {
            "description": "Re-runs after a non-zero exit, 0 to 10; backoff 30s doubling.",
            "format": "int32",
            "type": "integer"
          },
          "service": {
            "description": "The Hosting Service whose env and Secret bindings every run takes, and\nwhose live Release image it runs unless `image` or `build` names another,\nso a Job never runs code the environment does not serve.",
            "type": "string"
          },
          "timeout": {
            "description": "One attempt's deadline, 10s to 24h; default 1h.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "service"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.JobStatus": {
        "description": "JobStatus is the observed state of a Job.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "last_run": {
            "description": "The most recent run.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/JobRun"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "resolved_image": {
            "description": "The image digest the next run uses.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ListDistributedJobsRequest": {
        "description": "The request of ListDistributedJobs.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/DistributedJob"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ListDistributedJobsResponse": {
        "description": "The response of ListDistributedJobs.",
        "properties": {
          "distributed_jobs": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedJob"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ListDistributedRunsRequest": {
        "description": "The request of ListDistributedRuns.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/DistributedRun"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ListDistributedRunsResponse": {
        "description": "The response of ListDistributedRuns.",
        "properties": {
          "distributed_runs": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedRun"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ListJobRunsRequest": {
        "description": "The request of ListJobRuns.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/JobRun"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ListJobRunsResponse": {
        "description": "The response of ListJobRuns.",
        "properties": {
          "job_runs": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.JobRun"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ListJobsRequest": {
        "description": "The request of ListJobs.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Job"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ListJobsResponse": {
        "description": "The response of ListJobs.",
        "properties": {
          "jobs": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.Job"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ListRunsRequest": {
        "description": "The request of ListRuns.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Run"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ListRunsResponse": {
        "description": "The response of ListRuns.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "runs": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.Run"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ListSchedulesRequest": {
        "description": "The request of ListSchedules.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Schedule"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ListSchedulesResponse": {
        "description": "The response of ListSchedules.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "schedules": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.Schedule"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ListWorkflowsRequest": {
        "description": "The request of ListWorkflows.",
        "properties": {
          "filter": {
            "description": "AIP-160 filter over labels and filterable fields.",
            "type": "string"
          },
          "order_by": {
            "description": "AIP-132 ordering over filterable fields.",
            "type": "string"
          },
          "page_size": {
            "description": "At most this many; default 50, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "parent": {
            "description": "The parent to list in.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Workflow"
          }
        },
        "required": [
          "parent"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ListWorkflowsResponse": {
        "description": "The response of ListWorkflows.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "workflows": {
            "description": "The page.",
            "items": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.Workflow"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.OverlapPolicy": {
        "description": "What a Schedule fire does while a previous Run is still running.",
        "enum": [
          "skip",
          "buffer_one",
          "buffer_all",
          "cancel_other",
          "allow"
        ],
        "type": "string"
      },
      "sylphx.workflows.v1.PauseScheduleRequest": {
        "description": "The request of PauseSchedule.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the schedule.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Schedule"
          },
          "pause_note": {
            "description": "Why the Schedule is paused.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ReadDistributedRunShardsRequest": {
        "description": "The request of ReadDistributedRunShards.",
        "properties": {
          "name": {
            "description": "The name of the distributed run.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/DistributedRun"
          },
          "page_size": {
            "description": "At most this many; default 100, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "state_filter": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.ShardState",
            "description": "Only shards in this state; unset reads every shard."
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ReadDistributedRunShardsResponse": {
        "description": "The response of ReadDistributedRunShards.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "shards": {
            "description": "The page, in queue order.",
            "items": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.Shard"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ReadDistributedRunWorkersRequest": {
        "description": "The request of ReadDistributedRunWorkers.",
        "properties": {
          "name": {
            "description": "The name of the distributed run.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/DistributedRun"
          },
          "page_size": {
            "description": "At most this many; default 100, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ReadDistributedRunWorkersResponse": {
        "description": "The response of ReadDistributedRunWorkers.",
        "properties": {
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          },
          "workers": {
            "description": "The page, oldest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.Worker"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ReadJobRunLogsRequest": {
        "description": "The request of ReadJobRunLogs.",
        "properties": {
          "name": {
            "description": "The name of the job run.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/JobRun"
          },
          "page_size": {
            "description": "At most this many lines; default 500, clamped to 5000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          },
          "wait": {
            "description": "On a running run, wait up to this long (at most 30s) for new lines\nbefore returning an empty page.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ReadJobRunLogsResponse": {
        "description": "The response of ReadJobRunLogs.",
        "properties": {
          "lines": {
            "description": "The page, oldest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.JobLogLine"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page. It is set while the run can still write, so\na follower keeps polling; empty once the run closed and every line was\nread.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ReadRunHistoryRequest": {
        "description": "The request of ReadRunHistory.",
        "properties": {
          "name": {
            "description": "The name of the run.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Run"
          },
          "page_size": {
            "description": "At most this many; default 100, clamped to 1000.",
            "format": "int32",
            "type": "integer"
          },
          "page_token": {
            "description": "`next_page_token` of the previous page.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ReadRunHistoryResponse": {
        "description": "The response of ReadRunHistory.",
        "properties": {
          "events": {
            "description": "The page, oldest first.",
            "items": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.RunHistoryEvent"
            },
            "type": "array"
          },
          "next_page_token": {
            "description": "The token of the next page; empty on the last page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ResumeScheduleRequest": {
        "description": "The request of ResumeSchedule.",
        "properties": {
          "etag": {
            "description": "Act only if the current etag matches.",
            "type": "string"
          },
          "name": {
            "description": "The name of the schedule.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Schedule"
          },
          "validate_only": {
            "description": "Validate without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.RetryPolicy": {
        "description": "How a failed invocation is retried.",
        "properties": {
          "backoff_coefficient": {
            "description": "Backoff growth, 1.0 to 10.0; default 2.0.",
            "type": "number"
          },
          "initial_interval": {
            "description": "The first backoff; default 1s.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "max_attempts": {
            "description": "Attempts per step, 1 to 100; default 10.",
            "format": "int32",
            "type": "integer"
          },
          "max_interval": {
            "description": "The largest backoff; default 10m.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.Run": {
        "description": "A Run is one execution of a Workflow, read from the engine. Create starts\nit: the same `Idempotency-Key` and input return the same Run, a changed\ninput under the same key is refused. A Run ends `succeeded` only from its handler's recorded\nresult, and `cancelled` only from an authenticated cancel the handler\nacknowledged or a Run that never started.",
        "properties": {
          "attempt_count": {
            "description": "Attempts made so far, across every step.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "batch_position": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.BatchPosition",
            "description": "Set on a child of a batch Run.",
            "readOnly": true
          },
          "end_time": {
            "description": "When the Run closed.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.RunError",
            "description": "The failure, once `failed` or `timed_out`.",
            "readOnly": true
          },
          "input": {
            "additionalProperties": true,
            "description": "The Run input, at most 256 KiB of JSON.",
            "type": "object",
            "x-sylphx-immutable": true
          },
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/workflows/{workflow}/runs/{run}`.",
            "type": "string"
          },
          "output": {
            "additionalProperties": true,
            "description": "The handler's `complete` output, once `succeeded`.",
            "readOnly": true,
            "type": "object"
          },
          "schedule_fire": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.ScheduleFireRef",
            "description": "Set when a Schedule fire started the Run.",
            "readOnly": true
          },
          "schedule_time": {
            "description": "When the first invocation is due: set it directly, or through\n`start_delay`; at most 365 days ahead. A Run cancelled before then closes\n`cancelled` with no invocation.",
            "format": "date-time",
            "type": "string"
          },
          "start_delay": {
            "description": "Delay the first invocation by this much.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string",
            "writeOnly": true
          },
          "start_time": {
            "description": "When the Run started.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.RunState",
            "description": "The Run's lifecycle state.",
            "readOnly": true
          },
          "uid": {
            "description": "`run_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          },
          "workflow_generation": {
            "description": "The Workflow generation the Run pinned at start.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.RunError": {
        "description": "Why a Run failed.",
        "properties": {
          "code": {
            "description": "A machine-readable code, for example `handler_rejected` or\n`card_declined`.",
            "readOnly": true,
            "type": "string"
          },
          "message": {
            "description": "A customer-safe message.",
            "readOnly": true,
            "type": "string"
          },
          "retryable": {
            "description": "Whether the handler marked the failure retryable.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.RunHistoryEvent": {
        "description": "One entry of a Run's history.",
        "properties": {
          "attempt": {
            "description": "The attempt number, for invocation events.",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "attempt_outcome": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.AttemptOutcome",
            "description": "The attempt outcome, for invocation events.",
            "readOnly": true
          },
          "details": {
            "additionalProperties": true,
            "description": "Event details (step output, signal payload, error).",
            "readOnly": true,
            "type": "object"
          },
          "event_time": {
            "description": "When the event happened.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.RunHistoryEventKind",
            "description": "What happened.",
            "readOnly": true
          },
          "sequence": {
            "description": "Monotonic sequence number within the Run.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "step": {
            "description": "The step id, for step events.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.RunHistoryEventKind": {
        "description": "What a Run history event records.",
        "enum": [
          "run_started",
          "invocation",
          "step_completed",
          "sleep_started",
          "signal_received",
          "child_started",
          "cancel_requested",
          "run_closed"
        ],
        "type": "string"
      },
      "sylphx.workflows.v1.RunState": {
        "description": "The lifecycle state of a Run.",
        "enum": [
          "running",
          "succeeded",
          "failed",
          "cancelled",
          "timed_out"
        ],
        "type": "string"
      },
      "sylphx.workflows.v1.Schedule": {
        "description": "A Schedule starts Runs of a Workflow on a calendar or an interval. Every\nfire is an engine timer; `(schedule, intended time)` is the Run identity, so\none instant starts at most one Run.\nA fire is not a Run result.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/schedules/{schedule}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.ScheduleSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.ScheduleStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`sch_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ScheduleFire": {
        "description": "One fire of a Schedule.",
        "properties": {
          "intended_time": {
            "description": "The instant the fire was due.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "outcome": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.FireOutcome",
            "description": "What the fire did.",
            "readOnly": true
          },
          "run": {
            "description": "The Run it started, if any.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Run"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ScheduleFireRef": {
        "description": "The Schedule fire that started a Run.",
        "properties": {
          "intended_time": {
            "description": "The instant the fire was due.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "schedule": {
            "description": "The Schedule.",
            "readOnly": true,
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Schedule"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ScheduleSpec": {
        "description": "ScheduleSpec is the caller-writable state of a Schedule.",
        "properties": {
          "calendar": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.CalendarSpec",
            "description": "A calendar: cron expression and time zone."
          },
          "catchup_window": {
            "description": "Missed fires older than this are skipped; 10s to 365d.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "input": {
            "additionalProperties": true,
            "description": "The input of every Run, at most 64 KiB of JSON.",
            "type": "object"
          },
          "interval": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.IntervalSpec",
            "description": "A fixed interval."
          },
          "jitter": {
            "description": "Random delay added to each fire, at most min(interval, 1h).",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "overlap_policy": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.OverlapPolicy",
            "description": "What a fire does while a previous Run is still running."
          },
          "pause_note": {
            "description": "Why the Schedule is paused; shown in status.",
            "type": "string"
          },
          "paused": {
            "description": "Whether fires are paused.",
            "type": "boolean"
          },
          "workflow": {
            "description": "The Workflow the Schedule starts, in the same environment.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Workflow"
          }
        },
        "required": [
          "workflow"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.ScheduleStatus": {
        "description": "ScheduleStatus is the observed state of a Schedule.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "last_fire": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.ScheduleFire",
            "description": "The most recent fire.",
            "readOnly": true
          },
          "next_fire_times": {
            "description": "The next intended fire times.",
            "items": {
              "format": "date-time",
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ServiceHandler": {
        "description": "A Hosting Service route that handles a Workflow's steps.",
        "properties": {
          "path": {
            "description": "The request path, for example `/api/sylphx/workflows`.",
            "type": "string"
          },
          "service": {
            "description": "The Hosting Service in the same environment.",
            "type": "string"
          }
        },
        "required": [
          "service",
          "path"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.Shard": {
        "description": "One unit of a DistributedRun's work, leased by one worker at a time. A\nlease that stops heartbeating returns the shard without counting an\nattempt. Shards are read as a paged view of their run (`:readShards`).",
        "properties": {
          "attempts": {
            "description": "Attempts counted so far (failures and timeouts, not preemptions).",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "error": {
            "description": "The last failure's message.",
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "description": "The shard id, unique in its run.",
            "readOnly": true,
            "type": "string"
          },
          "outputs": {
            "description": "What the worker reported at `complete`, any JSON.",
            "readOnly": true
          },
          "seq": {
            "description": "Order in the run's queue, from 0.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.ShardState",
            "description": "The shard's state.",
            "readOnly": true
          },
          "worker": {
            "description": "The worker holding or last holding the lease.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ShardCounts": {
        "description": "Shards of a DistributedRun by state.",
        "properties": {
          "failed": {
            "description": "Out of attempts.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "leased": {
            "description": "Held by a worker.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "pending": {
            "description": "Waiting to be leased.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "succeeded": {
            "description": "Completed.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "total": {
            "description": "Every shard of the run.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ShardInput": {
        "description": "One shard as a run is started with it or appended to.",
        "properties": {
          "id": {
            "description": "The shard id, unique in the run; the server assigns one when empty.",
            "type": "string"
          },
          "input": {
            "description": "What the worker gets as its input, any JSON."
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.ShardState": {
        "description": "The state of a Shard.",
        "enum": [
          "pending",
          "leased",
          "succeeded",
          "failed"
        ],
        "type": "string"
      },
      "sylphx.workflows.v1.SignalRunRequest": {
        "description": "The request of SignalRun.",
        "properties": {
          "name": {
            "description": "The name of the run.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Run"
          },
          "payload": {
            "additionalProperties": true,
            "description": "The signal payload, at most 64 KiB of JSON.",
            "type": "object"
          },
          "signal": {
            "description": "The signal name the handler waits on.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "signal"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.StartRunBatchRequest": {
        "description": "The request of StartRunBatch.",
        "properties": {
          "inputs": {
            "description": "The inputs, one child Run each; at most 10 000.",
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array"
          },
          "max_concurrency": {
            "description": "At most this many children run at once; 0 is the Workflow's limit.",
            "format": "int32",
            "type": "integer"
          },
          "parent": {
            "description": "The parent the method acts in.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Run"
          }
        },
        "required": [
          "parent",
          "inputs"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.StartRunBatchResponse": {
        "description": "The response of StartRunBatch.",
        "properties": {
          "run": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.Run",
            "description": "The parent batch Run."
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.UpdateDistributedJobRequest": {
        "description": "The request of UpdateDistributedJob.",
        "properties": {
          "allow_missing": {
            "description": "Create the distributed job when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "distributed_job": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedJob",
            "description": "The distributed job to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "distributed_job"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.UpdateJobRequest": {
        "description": "The request of UpdateJob.",
        "properties": {
          "allow_missing": {
            "description": "Create the job when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "job": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.Job",
            "description": "The job to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "job"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.UpdateScheduleRequest": {
        "description": "The request of UpdateSchedule.",
        "properties": {
          "allow_missing": {
            "description": "Create the schedule when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "schedule": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.Schedule",
            "description": "The schedule to update; `name` identifies it."
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          }
        },
        "required": [
          "schedule"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.UpdateWorkflowRequest": {
        "description": "The request of UpdateWorkflow.",
        "properties": {
          "allow_missing": {
            "description": "Create the workflow when it does not exist (declarative upsert).",
            "type": "boolean"
          },
          "update_mask": {
            "description": "The fields to write; unset writes every populated field.",
            "type": "string"
          },
          "validate_only": {
            "description": "Validate and return the result without writing anything.",
            "type": "boolean"
          },
          "workflow": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.Workflow",
            "description": "The workflow to update; `name` identifies it."
          }
        },
        "required": [
          "workflow"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.WaitRunRequest": {
        "description": "The request of WaitRun.",
        "properties": {
          "name": {
            "description": "The name of the run.",
            "type": "string",
            "x-sylphx-resource-reference": "workflows.sylphx.com/Run"
          },
          "timeout": {
            "description": "How long to wait; default 30s, at most 60s.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.Worker": {
        "description": "One container of a DistributedRun's worker pool, read as a paged view of\nits run (`:readWorkers`).",
        "properties": {
          "duration": {
            "description": "Billed run time.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "readOnly": true,
            "type": "string"
          },
          "end_time": {
            "description": "When its container ended.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "id": {
            "description": "The worker id in its run, `w<n>`.",
            "readOnly": true,
            "type": "string"
          },
          "job": {
            "description": "The job that runs it.",
            "readOnly": true,
            "type": "string"
          },
          "reason": {
            "description": "Why it ended, for example `Completed`, `Preempted` or `OOMKilled`.",
            "readOnly": true,
            "type": "string"
          },
          "start_time": {
            "description": "When its container started.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.WorkerState",
            "description": "The worker's state.",
            "readOnly": true
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.WorkerClass": {
        "description": "Price and preemption class of distributed job workers (run-distributed-jobs.md §6).",
        "enum": [
          "scavenger",
          "standard"
        ],
        "type": "string"
      },
      "sylphx.workflows.v1.WorkerCounts": {
        "description": "Workers of a DistributedRun by state.",
        "properties": {
          "created": {
            "description": "Every worker the run created.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "ended": {
            "description": "Ended.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "running": {
            "description": "Running.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "waiting": {
            "description": "Waiting for Kueue to admit them.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.WorkerScale": {
        "description": "Elastic bounds of a DistributedJob's worker pool.",
        "properties": {
          "max_workers": {
            "description": "The most workers at once; the Cell and the org quota cap it too. Default 1.",
            "format": "int32",
            "type": "integer"
          },
          "min_workers": {
            "description": "Workers kept while shards remain; default 1.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.WorkerState": {
        "description": "The state of a Worker.",
        "enum": [
          "pending",
          "queued",
          "running",
          "ended"
        ],
        "type": "string"
      },
      "sylphx.workflows.v1.Workflow": {
        "description": "A Workflow is durable work a customer declares: the handler each step of a\nRun invokes, and its retry and timeout policy. A Workflow write never\nstarts, completes, or cancels a Run; a Run pins the Workflow generation it\nstarted from.",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/sylphx.common.v1.ResourceMeta",
            "description": "Resource metadata."
          },
          "name": {
            "description": "`orgs/{org}/projects/{project}/envs/{env}/workflows/{workflow}`.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.WorkflowSpec",
            "description": "Desired state."
          },
          "status": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.WorkflowStatus",
            "description": "Observed state.",
            "readOnly": true
          },
          "uid": {
            "description": "`wf_<cell><ulid>`; never reused.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "spec"
        ],
        "type": "object"
      },
      "sylphx.workflows.v1.WorkflowCaller": {
        "description": "Who may call the Run methods of a Workflow.",
        "enum": [
          "server",
          "users"
        ],
        "type": "string"
      },
      "sylphx.workflows.v1.WorkflowSpec": {
        "description": "WorkflowSpec is the caller-writable state of a Workflow.",
        "properties": {
          "callers": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.WorkflowCaller",
            "description": "Who may start, signal, wait on and cancel its Runs (`callable_by` in\n`sylphx.toml`); unset is `SERVER`.\nNot served yet: the server refuses the field, set to any value, until\nend-user sessions are admitted."
          },
          "handler_uri": {
            "description": "An HTTPS URI on port 443 whose host is a verified Network Domain of this\nproject or a Hosting route the project owns.",
            "type": "string"
          },
          "job_handler": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.JobHandler",
            "description": "A container that runs once per invocation. Not served yet: the server\nrefuses it until the engine runs container handlers."
          },
          "max_concurrent_runs": {
            "description": "At most this many running Runs of this Workflow; 0 is unlimited within the\nplan.",
            "format": "int32",
            "type": "integer"
          },
          "permission": {
            "description": "The app permission an end user's session must hold to call the Run\nmethods of this Workflow; required when `callers` is `USERS`. Not\nserved yet, like `callers`.",
            "type": "string"
          },
          "retry_policy": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.RetryPolicy",
            "description": "How a failed invocation is retried."
          },
          "service_handler": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.ServiceHandler",
            "description": "A Hosting Service in the same environment, which may be scaled to zero."
          },
          "timeouts": {
            "$ref": "#/components/schemas/sylphx.workflows.v1.WorkflowTimeouts",
            "description": "Invocation and Run deadlines."
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.WorkflowStatus": {
        "description": "WorkflowStatus is the observed state of a Workflow.",
        "properties": {
          "conditions": {
            "description": "Ready, Reconciling, Stalled.",
            "items": {
              "$ref": "#/components/schemas/sylphx.common.v1.Condition"
            },
            "readOnly": true,
            "type": "array"
          },
          "observed_generation": {
            "description": "The generation this status was computed from.",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "resolved_handler_uri": {
            "description": "The handler URI the current generation resolved to.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "sylphx.workflows.v1.WorkflowTimeouts": {
        "description": "Deadlines of a Workflow.",
        "properties": {
          "invocation_timeout": {
            "description": "One handler invocation, 1s to 900s; default 60s.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          },
          "run_timeout": {
            "description": "The whole Run, at most 365d; default 30d.",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "securitySchemes": {
      "bearer": {
        "description": "A Sylphx Access key or OAuth token.",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "One API for every Sylphx service. Generated from contracts/; do not edit.",
    "title": "Sylphx API",
    "version": "v1",
    "x-sylphx-generated": "@generated by sylphx-gen 0.1.0 from contracts@6a1bce71c4562366bcd933dde7dec01abbf14a9dde109a6ef2c4ea7c79f1fb3a. Do not edit."
  },
  "openapi": "3.1.0",
  "paths": {
    "/v1/ai_models": {
      "get": {
        "description": "Lists the admitted catalog; filter by `brand`, `modality`, or `model`.",
        "operationId": "ai_ai_models_list",
        "parameters": [
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.ai.v1.ListAiModelsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists the admitted catalog; filter by `brand`, `modality`, or `model`.",
        "tags": [
          "ai"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "ai.ai_models.list",
        "x-sylphx-permission": "ai:read",
        "x-sylphx-publishable-ok": true,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/ai_models/{ai_model}": {
      "get": {
        "description": "Gets an AI model.",
        "operationId": "ai_ai_models_get",
        "parameters": [
          {
            "in": "path",
            "name": "ai_model",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.ai.v1.AiModel"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an AI model.",
        "tags": [
          "ai"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "ai.ai_models.get",
        "x-sylphx-permission": "ai:read",
        "x-sylphx-publishable-ok": true,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/channels/{channel}/messages": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists a channel's messages after a cursor, oldest first. With\n`wait_seconds`, an empty result waits up to that long for the first new\nmessage and answers as soon as one arrives: this is how an agent\nsubscribes.",
        "operationId": "realtime_channels_history",
        "parameters": [
          {
            "in": "path",
            "name": "channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Return messages after this cursor. Empty starts at the oldest kept\nmessage.",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many messages; default 100, at most 1,000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "When no message is after the cursor, wait up to this many seconds for\none; 0 to 30, default 0 (answer at once).",
            "in": "query",
            "name": "wait_seconds",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.realtime.v1.ListMessagesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.realtime.sylphx.com"
          }
        ],
        "summary": "Lists a channel's messages after a cursor, oldest first. With `wait_seconds`, an empty result waits up to that long for the first new message and answers as soon as one arrives: this is how an agent subscribes.",
        "tags": [
          "realtime"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "realtime.channels.history",
        "x-sylphx-origin": "https://api.realtime.sylphx.com",
        "x-sylphx-permission": "realtime:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/channels/{channel}/presence": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists who is present on a channel.",
        "operationId": "realtime_channels_presence",
        "parameters": [
          {
            "in": "path",
            "name": "channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many members; default 100, at most 1,000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "The `next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.realtime.v1.ListPresenceResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.realtime.sylphx.com"
          }
        ],
        "summary": "Lists who is present on a channel.",
        "tags": [
          "realtime"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "realtime.channels.presence",
        "x-sylphx-origin": "https://api.realtime.sylphx.com",
        "x-sylphx-permission": "realtime:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/channels:publish": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nPublishes a message to a channel. The namespace must exist. The server\npublishes regardless of `client_publish`. A repeated Sylphx-Effect-Id\npublishes once.",
        "operationId": "realtime_channels_publish",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "channel": {
                    "description": "The channel, `namespace:name`: the name is 1 to 128 characters of\n`a-z A-Z 0-9 - _ . =` and no `*`.",
                    "type": "string"
                  },
                  "data": {
                    "description": "The JSON payload, at most 64 KiB encoded."
                  },
                  "event": {
                    "description": "The application's event name, 1 to 64 characters.",
                    "type": "string"
                  }
                },
                "required": [
                  "channel",
                  "event"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.realtime.v1.PublishResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.realtime.sylphx.com"
          }
        ],
        "summary": "Publishes a message to a channel. The namespace must exist. The server publishes regardless of `client_publish`. A repeated Sylphx-Effect-Id publishes once.",
        "tags": [
          "realtime"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "realtime.channels.publish",
        "x-sylphx-origin": "https://api.realtime.sylphx.com",
        "x-sylphx-permission": "realtime:publish",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/documents/{index_id}/{document_id}": {
      "delete": {
        "description": "Deletes a document.",
        "operationId": "data_documents_delete",
        "parameters": [
          {
            "in": "path",
            "name": "index_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "document_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only when the current version equals this one (0: any).",
            "in": "query",
            "name": "expected_version",
            "required": false,
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.DeleteDocumentResponse"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Deletes a document.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "data.documents.delete",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Reads a document.",
        "operationId": "data_documents_get",
        "parameters": [
          {
            "in": "path",
            "name": "index_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "document_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.GetDocumentResponse"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Reads a document.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.documents.get",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Changes some fields of a document and keeps the rest: a JSON merge patch\n(RFC 7396). The version goes up by one.",
        "operationId": "data_documents_patch",
        "parameters": [
          {
            "in": "path",
            "name": "index_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "document_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "expected_version": {
                    "description": "Write only when the current version equals this one (0: any).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "patch_json": {
                    "contentEncoding": "base64",
                    "description": "A JSON object, base64; at most 1 MiB. A field set to a value replaces\nthat field, an object merges into the stored object field by field, and\nnull removes the field.",
                    "type": "string"
                  },
                  "vector": {
                    "description": "A new embedding; empty keeps the stored one.",
                    "items": {
                      "type": "number"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "patch_json"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.PatchDocumentResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Changes some fields of a document and keeps the rest: a JSON merge patch (RFC 7396). The version goes up by one.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "data.documents.patch",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      },
      "put": {
        "description": "Writes a document to a search index, replacing the current version.",
        "operationId": "data_documents_put",
        "parameters": [
          {
            "in": "path",
            "name": "index_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "document_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "document_json": {
                    "contentEncoding": "base64",
                    "description": "The document as JSON, base64; at most 1 MiB.",
                    "type": "string"
                  },
                  "expected_version": {
                    "description": "Write only when the current version equals this one (0: any).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "vector": {
                    "description": "The document's embedding, at most 4096 numbers; the index's vector\ndimensions when it has them.",
                    "items": {
                      "type": "number"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.PutDocumentResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Writes a document to a search index, replacing the current version.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "data.documents.put",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-expiries": {
      "post": {
        "description": "Sets a key's time to live (EXPIRE) without rewriting its value; zero\nmakes it persistent.",
        "operationId": "data_kv_expire",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "key": {
                    "description": "The key.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  },
                  "ttl_seconds": {
                    "description": "Seconds to live, at most one year; zero makes the key persistent.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id",
                  "key",
                  "ttl_seconds"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ExpireValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Sets a key's time to live (EXPIRE) without rewriting its value; zero makes it persistent.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.expire",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-hash-getall": {
      "post": {
        "description": "Reads every field of a hash (HGETALL).",
        "operationId": "data_kv_hash_get_all",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "key": {
                    "description": "The hash's key.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id",
                  "key"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.HashGetAllResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Reads every field of a hash (HGETALL).",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.hash_get_all",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-hash-gets": {
      "post": {
        "description": "Reads one field of a hash (HGET); an absent field has no `value`.",
        "operationId": "data_kv_hash_get",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "field": {
                    "description": "The field's name.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The hash's key.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id",
                  "key",
                  "field"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.HashGetValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Reads one field of a hash (HGET); an absent field has no `value`.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.hash_get",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-hash-mget": {
      "post": {
        "description": "Reads several fields of a hash (HMGET), one per field, in order; an\nabsent field has no `value`.",
        "operationId": "data_kv_hash_get_many",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "fields": {
                    "description": "The fields' names.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "key": {
                    "description": "The hash's key.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id",
                  "key",
                  "fields"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.HashGetFieldsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Reads several fields of a hash (HMGET), one per field, in order; an absent field has no `value`.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.hash_get_many",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-hashes": {
      "post": {
        "description": "Sets fields of a hash (HSET), creating it.",
        "operationId": "data_kv_hash_set",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "fields": {
                    "description": "The fields to set; at least one.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.data.v1.HashField"
                    },
                    "type": "array"
                  },
                  "key": {
                    "description": "The hash's key.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id",
                  "key",
                  "fields"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.HashSetValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Sets fields of a hash (HSET), creating it.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.hash_set",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-increments": {
      "post": {
        "description": "Adds `delta` (default 1) to an integer value, creating it at zero.",
        "operationId": "data_kv_increment",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "delta": {
                    "description": "The amount to add; unset adds 1, and zero reads the count.",
                    "format": "int64",
                    "type": "string"
                  },
                  "key": {
                    "description": "The key.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id",
                  "key"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.IncrementValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Adds `delta` (default 1) to an integer value, creating it at zero.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.increment",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-list-lens": {
      "post": {
        "description": "Reads the length of a list (LLEN); an absent key has length zero.",
        "operationId": "data_kv_list_length",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "key": {
                    "description": "The list's key.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id",
                  "key"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ListLenValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Reads the length of a list (LLEN); an absent key has length zero.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.list_length",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-list-pops": {
      "post": {
        "description": "Pops values from the head of a list (LPOP); an emptied list is removed.",
        "operationId": "data_kv_list_pop",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "count": {
                    "description": "How many values to pop; unset pops one, zero pops none.",
                    "format": "uint64",
                    "type": "string"
                  },
                  "key": {
                    "description": "The list's key.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id",
                  "key"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ListPopValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Pops values from the head of a list (LPOP); an emptied list is removed.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.list_pop",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-list-pushes": {
      "post": {
        "description": "Pushes values onto the head of a list (LPUSH), creating it.",
        "operationId": "data_kv_list_push",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "key": {
                    "description": "The list's key.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  },
                  "values": {
                    "description": "The values to push, each base64, pushed in order (the last ends first).",
                    "items": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "namespace_id",
                  "key",
                  "values"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ListPushValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Pushes values onto the head of a list (LPUSH), creating it.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.list_push",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-list-ranges": {
      "post": {
        "description": "Reads a range of a list (LRANGE); negative indexes count from the end.",
        "operationId": "data_kv_list_range",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "key": {
                    "description": "The list's key.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  },
                  "start": {
                    "description": "The first index, inclusive; unset is 0, negative counts from the end.",
                    "format": "int64",
                    "type": "string"
                  },
                  "stop": {
                    "description": "The last index, inclusive; unset is -1 (the end).",
                    "format": "int64",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id",
                  "key"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ListRangeValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Reads a range of a list (LRANGE); negative indexes count from the end.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.list_range",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-mget": {
      "post": {
        "description": "Reads up to 1000 keys at once (MGET). Answers one entry per key, in\norder; an absent or expired key keeps its key and has no `value`.",
        "operationId": "data_kv_get_many",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "keys": {
                    "description": "The keys, at most 1000.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id",
                  "keys"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.GetValuesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Reads up to 1000 keys at once (MGET). Answers one entry per key, in order; an absent or expired key keeps its key and has no `value`.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.get_many",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-scans": {
      "post": {
        "description": "Walks a namespace's keys that match a glob (SCAN). Call again with the\nreturned `cursor` until it is empty.",
        "operationId": "data_kv_scan",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "count": {
                    "description": "At most this many keys per call; the service caps it at 1000.",
                    "format": "int32",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "cursor": {
                    "description": "The `cursor` of the previous call; empty starts the walk.",
                    "type": "string"
                  },
                  "glob": {
                    "description": "A glob of the keys to answer (`*`, `?`, `\\` escapes); empty matches\nevery key.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ScanValuesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Walks a namespace's keys that match a glob (SCAN). Call again with the returned `cursor` until it is empty.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.scan",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-zset-lens": {
      "post": {
        "description": "Reads the size of a sorted set (ZCARD); an absent key has size zero.",
        "operationId": "data_kv_zset_length",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "key": {
                    "description": "The sorted set's key.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id",
                  "key"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ZSetLenValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Reads the size of a sorted set (ZCARD); an absent key has size zero.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.zset_length",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-zset-ranges": {
      "post": {
        "description": "Reads a range of a sorted set by rank, lowest score first (ZRANGE);\nnegative indexes count from the end.",
        "operationId": "data_kv_zset_range",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "key": {
                    "description": "The sorted set's key.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  },
                  "start": {
                    "description": "The first rank, inclusive; unset is 0, negative counts from the end.",
                    "format": "int64",
                    "type": "string"
                  },
                  "stop": {
                    "description": "The last rank, inclusive; unset is -1 (the end).",
                    "format": "int64",
                    "type": "string"
                  },
                  "with_scores": {
                    "description": "Whether to answer each member's score.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "namespace_id",
                  "key"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ZSetRangeValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Reads a range of a sorted set by rank, lowest score first (ZRANGE); negative indexes count from the end.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.zset_range",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-zset-scores": {
      "post": {
        "description": "Reads a member's score (ZSCORE); an absent member has no `score`.",
        "operationId": "data_kv_zset_score",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "key": {
                    "description": "The sorted set's key.",
                    "type": "string"
                  },
                  "member": {
                    "description": "The member.",
                    "type": "string"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id",
                  "key",
                  "member"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ZSetScoreValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Reads a member's score (ZSCORE); an absent member has no `score`.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.zset_score",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv-zsets": {
      "post": {
        "description": "Adds members to a sorted set or updates their scores (ZADD), creating it.",
        "operationId": "data_kv_zset_add",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "key": {
                    "description": "The sorted set's key.",
                    "type": "string"
                  },
                  "members": {
                    "description": "The members to add or rescore.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.data.v1.ZSetMember"
                    },
                    "type": "array"
                  },
                  "namespace_id": {
                    "description": "The namespace's id.",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace_id",
                  "key",
                  "members"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ZSetAddValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Adds members to a sorted set or updates their scores (ZADD), creating it.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.zset_add",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv/{namespace_id}": {
      "get": {
        "description": "Lists a namespace's values in key order.",
        "operationId": "data_kv_list",
        "parameters": [
          {
            "in": "path",
            "name": "namespace_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only keys with this prefix.",
            "in": "query",
            "name": "prefix",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many entries; the service caps it.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "The `next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ListValuesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Lists a namespace's values in key order.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "data.kv.list",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/kv/{namespace_id}/{key}": {
      "delete": {
        "description": "Deletes a value.",
        "operationId": "data_kv_delete",
        "parameters": [
          {
            "in": "path",
            "name": "namespace_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only when the current version equals this one (0: any).",
            "in": "query",
            "name": "expected_version",
            "required": false,
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.DeleteValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Deletes a value.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "data.kv.delete",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Reads a value.",
        "operationId": "data_kv_get",
        "parameters": [
          {
            "in": "path",
            "name": "namespace_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.GetValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Reads a value.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv.get",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      },
      "put": {
        "description": "Writes a value. Without `ttl_seconds` the namespace default applies; zero\nmeans no expiry.",
        "operationId": "data_kv_put",
        "parameters": [
          {
            "in": "path",
            "name": "namespace_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "expected_version": {
                    "description": "Write only when the current version equals this one (0: any).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "nx": {
                    "description": "Write only when the key is absent (SET NX).",
                    "type": "boolean"
                  },
                  "ttl_seconds": {
                    "description": "Seconds to live; unset uses the namespace default, zero never expires.",
                    "format": "uint64",
                    "type": "string"
                  },
                  "value": {
                    "contentEncoding": "base64",
                    "description": "The bytes, base64.",
                    "type": "string"
                  },
                  "xx": {
                    "description": "Write only when the key is present (SET XX); excludes `nx`.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.PutValueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Writes a value. Without `ttl_seconds` the namespace default applies; zero means no expiry.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "data.kv.put",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/meters": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists meters. Anonymous-readable: the pricing page renders from it.",
        "operationId": "billing_meters_list",
        "parameters": [
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.ListMetersResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists meters. Anonymous-readable: the pricing page renders from it.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "billing.meters.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-publishable-ok": true,
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/meters/{meter}": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a meter.",
        "operationId": "billing_meters_get",
        "parameters": [
          {
            "in": "path",
            "name": "meter",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.Meter"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a meter.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "billing.meters.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-publishable-ok": true,
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/multi-search/{index_id}": {
      "post": {
        "description": "Runs several searches of one index in one request, 1 to 10, and answers\neach in request order.",
        "operationId": "data_search_multi",
        "parameters": [
          {
            "in": "path",
            "name": "index_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "searches": {
                    "description": "The searches, 1 to 10; each one's index_id is this index.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.data.v1.SearchRequest"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "searches"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.MultiSearchResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Runs several searches of one index in one request, 1 to 10, and answers each in request order.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.search.multi",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/namespaces": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists the environment's namespaces.",
        "operationId": "realtime_namespaces_list",
        "parameters": [
          {
            "description": "At most this many namespaces; the service caps it.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "The `next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.realtime.v1.ListNamespacesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.realtime.sylphx.com"
          }
        ],
        "summary": "Lists the environment's namespaces.",
        "tags": [
          "realtime"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "realtime.namespaces.list",
        "x-sylphx-origin": "https://api.realtime.sylphx.com",
        "x-sylphx-permission": "realtime:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/namespaces/{name}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a namespace, its channels' history and presence, and closes the\nsubscriptions on them.",
        "operationId": "realtime_namespaces_delete",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.realtime.v1.DeleteNamespaceResponse"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.realtime.sylphx.com"
          }
        ],
        "summary": "Deletes a namespace, its channels' history and presence, and closes the subscriptions on them.",
        "tags": [
          "realtime"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "realtime.namespaces.delete",
        "x-sylphx-origin": "https://api.realtime.sylphx.com",
        "x-sylphx-permission": "realtime:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nReads a namespace.",
        "operationId": "realtime_namespaces_get",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.realtime.v1.Namespace"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.realtime.sylphx.com"
          }
        ],
        "summary": "Reads a namespace.",
        "tags": [
          "realtime"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "realtime.namespaces.get",
        "x-sylphx-origin": "https://api.realtime.sylphx.com",
        "x-sylphx-permission": "realtime:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "put": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates or replaces a namespace's rules. Existing channels follow the new\nrules from their next message; shortening history trims at the next\npublish.",
        "operationId": "realtime_namespaces_put",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "client_publish": {
                    "description": "Whether clients may publish.",
                    "type": "boolean"
                  },
                  "history": {
                    "$ref": "#/components/schemas/sylphx.realtime.v1.HistoryPreset",
                    "description": "How much history channels keep."
                  },
                  "presence": {
                    "description": "Whether channels track presence.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.realtime.v1.Namespace"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.realtime.sylphx.com"
          }
        ],
        "summary": "Creates or replaces a namespace's rules. Existing channels follow the new rules from their next message; shortening history trims at the next publish.",
        "tags": [
          "realtime"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "realtime.namespaces.put",
        "x-sylphx-origin": "https://api.realtime.sylphx.com",
        "x-sylphx-permission": "realtime:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/objects/{bucket_id}": {
      "get": {
        "description": "Lists a bucket's objects in key order.",
        "operationId": "data_objects_list",
        "parameters": [
          {
            "in": "path",
            "name": "bucket_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only keys with this prefix.",
            "in": "query",
            "name": "prefix",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many objects; the service caps it.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "The `next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ListObjectsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Lists a bucket's objects in key order.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "data.objects.list",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/objects/{bucket_id}/{key}": {
      "delete": {
        "description": "Deletes an object's current version (history is kept).",
        "operationId": "data_objects_delete",
        "parameters": [
          {
            "in": "path",
            "name": "bucket_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only when the current version equals this one (0: any).",
            "in": "query",
            "name": "expected_version",
            "required": false,
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.DeleteObjectResponse"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Deletes an object's current version (history is kept).",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "data.objects.delete",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Reads an object and its bytes (`body`, base64).",
        "operationId": "data_objects_get",
        "parameters": [
          {
            "in": "path",
            "name": "bucket_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Zero reads the current version; a positive value reads that version.",
            "in": "query",
            "name": "version",
            "required": false,
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.GetObjectResponse"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Reads an object and its bytes (`body`, base64).",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.objects.get",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      },
      "put": {
        "description": "Writes an object's bytes, replacing the current version. `body` is the\nbase64 of the bytes.",
        "operationId": "data_objects_put",
        "parameters": [
          {
            "in": "path",
            "name": "bucket_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "body": {
                    "contentEncoding": "base64",
                    "description": "The bytes, base64.",
                    "type": "string"
                  },
                  "content_type": {
                    "description": "The media type, for example `application/pdf`.",
                    "type": "string"
                  },
                  "expected_version": {
                    "description": "Write only when the current version equals this one (0: any).",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.PutObjectResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Writes an object's bytes, replacing the current version. `body` is the base64 of the bytes.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "data.objects.put",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs": {
      "get": {
        "description": "Lists orgs the caller can see.",
        "operationId": "access_orgs_list",
        "parameters": [
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable spec fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ListOrgsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists orgs the caller can see.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "access.orgs.list",
        "x-sylphx-permission": "access:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates an org. Access assigns the id.",
        "operationId": "access_orgs_create",
        "parameters": [
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.access.v1.Org"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.Org"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an org. Access assigns the id.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "access.orgs.create",
        "x-sylphx-permission": "access:admin",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}": {
      "delete": {
        "description": "Deletes an org and everything in it. Deletion cascades through every\nservice, so it returns an Operation.",
        "operationId": "access_orgs_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete every child Resource; without it a parent with children\nfails with FAILED_PRECONDITION.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an org and everything in it. Deletion cascades through every service, so it returns an Operation.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "access.orgs.delete",
        "x-sylphx-permission": "access:admin",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets an org.",
        "operationId": "access_orgs_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.Org"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an org.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "access.orgs.get",
        "x-sylphx-permission": "access:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates an org.",
        "operationId": "access_orgs_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.access.v1.Org"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.Org"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates an org.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.orgs.update",
        "x-sylphx-permission": "access:admin",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/api_keys": {
      "get": {
        "description": "Lists API keys in an environment, or the org-wide keys of an org.",
        "operationId": "access_api_keys_list_1",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable spec fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ListApiKeysResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists API keys in an environment, or the org-wide keys of an org.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "access.api_keys.list",
        "x-sylphx-permission": "access:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates an API key. Access assigns the id.",
        "operationId": "access_api_keys_create_1",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an API key. Access assigns the id.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "access.api_keys.create",
        "x-sylphx-permission": "access:keys:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/api_keys/{api_key}": {
      "delete": {
        "description": "Deletes an API key.",
        "operationId": "access_api_keys_delete_1",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "api_key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an API key.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.api_keys.delete",
        "x-sylphx-permission": "access:keys:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets an API key.",
        "operationId": "access_api_keys_get_1",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "api_key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an API key.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "access.api_keys.get",
        "x-sylphx-permission": "access:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates an API key.",
        "operationId": "access_api_keys_update_1",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "api_key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates an API key.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.api_keys.update",
        "x-sylphx-permission": "access:keys:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/api_keys/{api_key}:revoke": {
      "post": {
        "description": "Revokes an API key immediately; revocation propagates on its own fast\npath, ahead of the bulk key data.",
        "operationId": "access_api_keys_revoke_1",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "api_key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Revoke only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without revoking.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Revokes an API key immediately; revocation propagates on its own fast path, ahead of the bulk key data.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.api_keys.revoke",
        "x-sylphx-permission": "access:keys:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/api_keys/{api_key}:roll": {
      "post": {
        "description": "Rolls an API key: returns a new key with the same spec and revokes the\nold one after the grace period.",
        "operationId": "access_api_keys_roll_1",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "api_key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Roll only if the current etag matches.",
                    "type": "string"
                  },
                  "grace_period": {
                    "description": "How long the old key keeps verifying; default 24h.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without rolling.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Rolls an API key: returns a new key with the same spec and revokes the old one after the grace period.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.api_keys.roll",
        "x-sylphx-permission": "access:keys:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/billing_accounts": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists an org's billing accounts: exactly one, `default`.",
        "operationId": "billing_billing_accounts_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.ListBillingAccountsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists an org's billing accounts: exactly one, `default`.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "billing.billing_accounts.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/billing_accounts/{billing_account}": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a billing account.",
        "operationId": "billing_billing_accounts_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "billing_account",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.BillingAccount"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a billing account.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "billing.billing_accounts.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates a billing account: changes plan, spend limit, or billing email.",
        "operationId": "billing_billing_accounts_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "billing_account",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.billing.v1.BillingAccount"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.BillingAccount"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a billing account: changes plan, spend limit, or billing email.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "billing.billing_accounts.update",
        "x-sylphx-permission": "billing:admin",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/billing_accounts/{billing_account}:setupPaymentMethod": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nStarts saving a payment method for the org: returns a client secret the\nconsole confirms with Stripe.js, so card data never reaches Sylphx. The\nsaved method becomes the account's default and is charged off-session\nfor each finalized invoice.",
        "operationId": "billing_billing_accounts_setup_payment_method",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "billing_account",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.SetupPaymentMethodResponse"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Starts saving a payment method for the org: returns a client secret the console confirms with Stripe.js, so card data never reaches Sylphx. The saved method becomes the account's default and is charged off-session for each finalized invoice.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "billing.billing_accounts.setup_payment_method",
        "x-sylphx-permission": "billing:admin",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/budget_leases": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists an org's budget leases.",
        "operationId": "billing_budget_leases_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.ListBudgetLeasesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists an org's budget leases.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "billing.budget_leases.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/budget_leases/{budget_lease}": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a budget lease.",
        "operationId": "billing_budget_leases_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "budget_lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.BudgetLease"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a budget lease.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "billing.budget_leases.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/connection_providers": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists an org's connection providers.",
        "operationId": "connections_connection_providers_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.connections.v1.ListConnectionProvidersResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists an org's connection providers.",
        "tags": [
          "connections"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "connections.connection_providers.list",
        "x-sylphx-permission": "connections:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a connection provider.",
        "operationId": "connections_connection_providers_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the new connection provider, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "in": "query",
            "name": "connection_provider_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.connections.v1.ConnectionProvider"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.connections.v1.ConnectionProvider"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a connection provider.",
        "tags": [
          "connections"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "connections.connection_providers.create",
        "x-sylphx-permission": "connections:admin",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/connection_providers/{connection_provider}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a connection provider; it must have no connections.",
        "operationId": "connections_connection_providers_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "connection_provider",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete every child Resource; without it a parent with children\nfails with FAILED_PRECONDITION.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a connection provider; it must have no connections.",
        "tags": [
          "connections"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "connections.connection_providers.delete",
        "x-sylphx-permission": "connections:admin",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a connection provider.",
        "operationId": "connections_connection_providers_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "connection_provider",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.connections.v1.ConnectionProvider"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a connection provider.",
        "tags": [
          "connections"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "connections.connection_providers.get",
        "x-sylphx-permission": "connections:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates a connection provider.",
        "operationId": "connections_connection_providers_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "connection_provider",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.connections.v1.ConnectionProvider"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.connections.v1.ConnectionProvider"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a connection provider.",
        "tags": [
          "connections"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "connections.connection_providers.update",
        "x-sylphx-permission": "connections:admin",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/connections": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists an org's connections.",
        "operationId": "connections_connections_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.connections.v1.ListConnectionsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists an org's connections.",
        "tags": [
          "connections"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "connections.connections.list",
        "x-sylphx-permission": "connections:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nRecords an installation; the controller confirms it with the provider.",
        "operationId": "connections_connections_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the new connection, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "in": "query",
            "name": "connection_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.connections.v1.Connection"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Records an installation; the controller confirms it with the provider.",
        "tags": [
          "connections"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.connections.v1.Connection"
        },
        "x-sylphx-method": "connections.connections.create",
        "x-sylphx-permission": "connections:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/connections/{connection}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nForgets a connection. The installation itself is removed at the provider.",
        "operationId": "connections_connections_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "connection",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Forgets a connection. The installation itself is removed at the provider.",
        "tags": [
          "connections"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "connections.connections.delete",
        "x-sylphx-permission": "connections:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a connection.",
        "operationId": "connections_connections_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "connection",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.connections.v1.Connection"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a connection.",
        "tags": [
          "connections"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "connections.connections.get",
        "x-sylphx-permission": "connections:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates a connection's metadata.",
        "operationId": "connections_connections_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "connection",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.connections.v1.Connection"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a connection's metadata.",
        "tags": [
          "connections"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.connections.v1.Connection"
        },
        "x-sylphx-method": "connections.connections.update",
        "x-sylphx-permission": "connections:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/entitlements": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists an org's entitlements: exactly one, `default`.",
        "operationId": "entitlement_entitlements_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable spec fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.entitlement.v1.ListEntitlementsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists an org's entitlements: exactly one, `default`.",
        "tags": [
          "entitlement"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "entitlement.entitlements.list",
        "x-sylphx-permission": "entitlement:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/entitlements/{entitlement}": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets an org's entitlement.",
        "operationId": "entitlement_entitlements_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "entitlement",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.entitlement.v1.Entitlement"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an org's entitlement.",
        "tags": [
          "entitlement"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "entitlement.entitlements.get",
        "x-sylphx-permission": "entitlement:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/exchange_rates": {
      "get": {
        "description": "Lists the exchange rates Money converts at (units per US dollar by day),\nfor any reader that converts revenue.",
        "operationId": "money_exchange_rates_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, comparisons joined with `AND`: `currency_code = \"EUR\"`,\n`day >= \"YYYY-MM-DD\"`, `day <= \"YYYY-MM-DD\"`. The days\ndefault to the 31 days to today (UTC), and span at most 400 days.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListExchangeRatesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists the exchange rates Money converts at (units per US dollar by day), for any reader that converts revenue.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.exchange_rates.list",
        "x-sylphx-permission": "revenue:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/invoices": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists an org's invoices.",
        "operationId": "billing_invoices_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.ListInvoicesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists an org's invoices.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "billing.invoices.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/invoices/{invoice}": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets an invoice.",
        "operationId": "billing_invoices_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "invoice",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.Invoice"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an invoice.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "billing.invoices.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/invoices/{invoice}:recordPayment": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nA seller operator records an externally verified full invoice payment.\nThe platform-only scope cannot be granted by customer owners/admins.\nThe invoice name identifies the customer, not the seller. References are\nimmutable and idempotent per org and method; conflicting reuse is refused.",
        "operationId": "billing_invoices_record_payment",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "invoice",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "amount": {
                    "$ref": "#/components/schemas/sylphx.billing.v1.Money",
                    "description": "Positive exact full outstanding balance in USD integer minor units."
                  },
                  "payment_method": {
                    "description": "card or invoice debits cash; internal_settlement debits a dedicated\nnoncash journal account, never cash or promotional/customer credit.",
                    "type": "string"
                  },
                  "settlement_reference": {
                    "description": "Bank/provider/journal reference, 1..200 bytes, unique per org and method.",
                    "type": "string"
                  }
                },
                "required": [
                  "payment_method",
                  "settlement_reference",
                  "amount"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.Invoice"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "A seller operator records an externally verified full invoice payment. The platform-only scope cannot be granted by customer owners/admins. The invoice name identifies the customer, not the seller. References are immutable and idempotent per org and method; conflicting reuse is refused.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "billing.invoices.record_payment",
        "x-sylphx-permission": "billing:payments:record",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects": {
      "get": {
        "description": "Lists projects in an org.",
        "operationId": "access_projects_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable spec fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ListProjectsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists projects in an org.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "access.projects.list",
        "x-sylphx-permission": "access:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a project. Access assigns the id.",
        "operationId": "access_projects_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.access.v1.Project"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.Project"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a project. Access assigns the id.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "access.projects.create",
        "x-sylphx-permission": "access:admin",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}": {
      "delete": {
        "description": "Deletes a project.",
        "operationId": "access_projects_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete every child Resource; without it a parent with children\nfails with FAILED_PRECONDITION.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a project.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.projects.delete",
        "x-sylphx-permission": "access:admin",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a project.",
        "operationId": "access_projects_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.Project"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a project.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "access.projects.get",
        "x-sylphx-permission": "access:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a project.",
        "operationId": "access_projects_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.access.v1.Project"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.Project"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a project.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.projects.update",
        "x-sylphx-permission": "access:admin",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/artifacts": {
      "get": {
        "description": "Lists a project's artifacts; filter by `digest`, `kind`, or `subject`.",
        "operationId": "artifacts_artifacts_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.artifacts.v1.ListArtifactsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a project's artifacts; filter by `digest`, `kind`, or `subject`.",
        "tags": [
          "artifacts"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "artifacts.artifacts.list",
        "x-sylphx-permission": "artifacts:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Registers an artifact whose bytes were pushed by digest; verification runs after.",
        "operationId": "artifacts_artifacts_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the new artifact, the digest with `-` for `:`; the server derives it from `digest` when empty; the server assigns one when\nempty.",
            "in": "query",
            "name": "artifact_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.artifacts.v1.Artifact"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.artifacts.v1.Artifact"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Registers an artifact whose bytes were pushed by digest; verification runs after.",
        "tags": [
          "artifacts"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "artifacts.artifacts.create",
        "x-sylphx-permission": "artifacts:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/artifacts/{artifact}": {
      "delete": {
        "description": "Deletes an artifact; fails while a Release references it or a legal hold is active.",
        "operationId": "artifacts_artifacts_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "artifact",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an artifact; fails while a Release references it or a legal hold is active.",
        "tags": [
          "artifacts"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "artifacts.artifacts.delete",
        "x-sylphx-permission": "artifacts:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets an artifact.",
        "operationId": "artifacts_artifacts_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "artifact",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.artifacts.v1.Artifact"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an artifact.",
        "tags": [
          "artifacts"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "artifacts.artifacts.get",
        "x-sylphx-permission": "artifacts:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/build_caches": {
      "get": {
        "description": "Lists build caches in a project.",
        "operationId": "build_build_caches_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.build.v1.ListBuildCachesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists build caches in a project.",
        "tags": [
          "build"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "build.build_caches.list",
        "x-sylphx-permission": "build:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/build_caches/{build_cache}": {
      "delete": {
        "description": "Deletes a build cache.",
        "operationId": "build_build_caches_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "build_cache",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a build cache.",
        "tags": [
          "build"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "build.build_caches.delete",
        "x-sylphx-permission": "build:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a build cache.",
        "operationId": "build_build_caches_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "build_cache",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.build.v1.BuildCache"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a build cache.",
        "tags": [
          "build"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "build.build_caches.get",
        "x-sylphx-permission": "build:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a build cache.",
        "operationId": "build_build_caches_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "build_cache",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.build.v1.BuildCache"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.build.v1.BuildCache"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a build cache.",
        "tags": [
          "build"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "build.build_caches.update",
        "x-sylphx-permission": "build:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/build_caches/{build_cache}:mintEnv": {
      "post": {
        "description": "Mints the settings a build that runs elsewhere (a laptop, a CI runner)\nuses to reach the cache: the sccache, Turbo and crates mirror doors and a\nshort-lived token, as environment variables.",
        "operationId": "build_build_caches_mint_env",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "build_cache",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "access": {
                    "$ref": "#/components/schemas/sylphx.build.v1.BuildCacheAccess",
                    "description": "What the token may do; default READ."
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.build.v1.MintBuildCacheEnvResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Mints the settings a build that runs elsewhere (a laptop, a CI runner) uses to reach the cache: the sccache, Turbo and crates mirror doors and a short-lived token, as environment variables.",
        "tags": [
          "build"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "build.build_caches.mint_env",
        "x-sylphx-permission": "build:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/build_caches/{build_cache}:purge": {
      "post": {
        "description": "Empties a build cache and keeps the cache. The undo is that the next\nbuild refills it.",
        "operationId": "build_build_caches_purge",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "build_cache",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Purge only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without purging anything.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Empties a build cache and keeps the cache. The undo is that the next build refills it.",
        "tags": [
          "build"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.build.v1.BuildCache"
        },
        "x-sylphx-method": "build.build_caches.purge",
        "x-sylphx-permission": "build:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/builds": {
      "get": {
        "description": "Lists builds in a project.",
        "operationId": "build_builds_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.build.v1.ListBuildsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists builds in a project.",
        "tags": [
          "build"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "build.builds.list",
        "x-sylphx-permission": "build:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a build: one command or one image over a commit or a tree. The\nOperation is done when the build reaches a final state. `run` and\n`image` are the short forms.",
        "operationId": "build_builds_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "build_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.build.v1.Build"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a build: one command or one image over a commit or a tree. The Operation is done when the build reaches a final state. `run` and `image` are the short forms.",
        "tags": [
          "build"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.build.v1.Build"
        },
        "x-sylphx-method": "build.builds.create",
        "x-sylphx-permission": "build:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/builds/{build}": {
      "get": {
        "description": "Gets a build.",
        "operationId": "build_builds_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "build",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.build.v1.Build"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a build.",
        "tags": [
          "build"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "build.builds.get",
        "x-sylphx-permission": "build:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/builds/{build}:cancel": {
      "post": {
        "description": "Cancels a queued or running Build; its lease is released and nothing\nis published.",
        "operationId": "build_builds_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "build",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without acting.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Cancels a queued or running Build; its lease is released and nothing is published.",
        "tags": [
          "build"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.build.v1.Build"
        },
        "x-sylphx-method": "build.builds.cancel",
        "x-sylphx-permission": "build:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/builds/{build}:readLogs": {
      "get": {
        "description": "Reads a page of a build's log lines, oldest first. With `wait`, an empty\npage on a running build waits up to that long for new lines, so a client\nfollows the log by passing each `next_page_token` back.",
        "operationId": "build_builds_read_logs",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "build",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many lines; default 500, clamped to 5000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "On a running build, wait up to this long (at most 30s) for new lines\nbefore returning an empty page.",
            "in": "query",
            "name": "wait",
            "required": false,
            "schema": {
              "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.build.v1.ReadBuildLogsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Reads a page of a build's log lines, oldest first. With `wait`, an empty page on a running build waits up to that long for new lines, so a client follows the log by passing each `next_page_token` back.",
        "tags": [
          "build"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "build.builds.read_logs",
        "x-sylphx-permission": "build:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/builds:buildImage": {
      "post": {
        "description": "Builds an image, with an SBOM and signed provenance, from a commit or an\nuploaded tree.",
        "operationId": "build_builds_build_image",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "allow_hosts": {
                    "description": "Internet hosts the build may reach; empty means in-cell only.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "build_id": {
                    "description": "The id segment of the Build's name; the server assigns one when unset.",
                    "type": "string"
                  },
                  "cache": {
                    "description": "The BuildCache to use; default the project's `default` cache.",
                    "type": "string",
                    "x-sylphx-resource-reference": "build.sylphx.com/BuildCache"
                  },
                  "image": {
                    "$ref": "#/components/schemas/sylphx.build.v1.ImageTarget",
                    "description": "The image to build."
                  },
                  "size": {
                    "$ref": "#/components/schemas/sylphx.build.v1.BuildSize",
                    "description": "The machine size; default `[build] size`, else STANDARD."
                  },
                  "source": {
                    "$ref": "#/components/schemas/sylphx.build.v1.BuildSource",
                    "description": "A commit, read through the Broker at that exact commit."
                  },
                  "timeout": {
                    "description": "The time limit; default 1 hour.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  },
                  "tree": {
                    "$ref": "#/components/schemas/sylphx.build.v1.BuildTree",
                    "description": "An uploaded tree."
                  },
                  "validate_only": {
                    "description": "Validate and return the result without writing anything.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Builds an image, with an SBOM and signed provenance, from a commit or an uploaded tree.",
        "tags": [
          "build"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.build.v1.Build"
        },
        "x-sylphx-method": "build.builds.build_image",
        "x-sylphx-permission": "build:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/builds:run": {
      "post": {
        "description": "Runs one command over an uploaded tree and settles with its exit code,\nlike the local command. A caller that gets a failure before the command\nstarted (BUILD_FAILURE_SETUP_FAILED, NO_CAPACITY) may build locally.",
        "operationId": "build_builds_run",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "allow_hosts": {
                    "description": "Internet hosts the command may reach; empty means in-cell only.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "artifacts": {
                    "description": "Globs of files kept after the command ends, whatever its exit code.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "build_id": {
                    "description": "The id segment of the Build's name; the server assigns one when unset.",
                    "type": "string"
                  },
                  "cache": {
                    "description": "The BuildCache to use; default the project's `default` cache.",
                    "type": "string",
                    "x-sylphx-resource-reference": "build.sylphx.com/BuildCache"
                  },
                  "command": {
                    "description": "The program and its arguments.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "size": {
                    "$ref": "#/components/schemas/sylphx.build.v1.BuildSize",
                    "description": "The machine size; default `[build] size`, else STANDARD."
                  },
                  "timeout": {
                    "description": "The time limit; default 1 hour.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  },
                  "tree": {
                    "$ref": "#/components/schemas/sylphx.build.v1.BuildTree",
                    "description": "The uploaded tree to run over."
                  },
                  "validate_only": {
                    "description": "Validate and return the result without writing anything.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "tree",
                  "command"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Runs one command over an uploaded tree and settles with its exit code, like the local command. A caller that gets a failure before the command started (BUILD_FAILURE_SETUP_FAILED, NO_CAPACITY) may build locally.",
        "tags": [
          "build"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.build.v1.Build"
        },
        "x-sylphx-method": "build.builds.run",
        "x-sylphx-permission": "build:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/certificates": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists certificates in a project.",
        "operationId": "network_certificates_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.network.v1.ListCertificatesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists certificates in a project.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "network.certificates.list",
        "x-sylphx-permission": "network:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/certificates/{certificate}": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a certificate.",
        "operationId": "network_certificates_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "certificate",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.network.v1.Certificate"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a certificate.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "network.certificates.get",
        "x-sylphx-permission": "network:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/domains": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists domains in a project.",
        "operationId": "network_domains_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.network.v1.ListDomainsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists domains in a project.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "network.domains.list",
        "x-sylphx-permission": "network:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a domain. The Operation is done when the controller settles it.",
        "operationId": "network_domains_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "domain_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.network.v1.Domain"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a domain. The Operation is done when the controller settles it.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.network.v1.Domain"
        },
        "x-sylphx-method": "network.domains.create",
        "x-sylphx-permission": "network:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/domains/{domain}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a domain.",
        "operationId": "network_domains_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a domain.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "network.domains.delete",
        "x-sylphx-permission": "network:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a domain.",
        "operationId": "network_domains_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.network.v1.Domain"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a domain.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "network.domains.get",
        "x-sylphx-permission": "network:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates a domain.",
        "operationId": "network_domains_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.network.v1.Domain"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a domain.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.network.v1.Domain"
        },
        "x-sylphx-method": "network.domains.update",
        "x-sylphx-permission": "network:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/domains/{domain}:verify": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nChecks the verification record now instead of at the next sweep.",
        "operationId": "network_domains_verify",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Checks the verification record now instead of at the next sweep.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.network.v1.Domain"
        },
        "x-sylphx-method": "network.domains.verify",
        "x-sylphx-permission": "network:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/egress_identities": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists egress identitys in a project.",
        "operationId": "network_egress_identities_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.network.v1.ListEgressIdentitiesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists egress identitys in a project.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "network.egress_identities.list",
        "x-sylphx-permission": "network:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates an egress identity. The Operation is done when the controller\nsettles it.",
        "operationId": "network_egress_identities_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "egress_identity_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.network.v1.EgressIdentity"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an egress identity. The Operation is done when the controller settles it.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.network.v1.EgressIdentity"
        },
        "x-sylphx-method": "network.egress_identities.create",
        "x-sylphx-permission": "network:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/egress_identities/{egress_identity}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes an egress identity.",
        "operationId": "network_egress_identities_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "egress_identity",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an egress identity.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "network.egress_identities.delete",
        "x-sylphx-permission": "network:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets an egress identity.",
        "operationId": "network_egress_identities_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "egress_identity",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.network.v1.EgressIdentity"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an egress identity.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "network.egress_identities.get",
        "x-sylphx-permission": "network:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates an egress identity.",
        "operationId": "network_egress_identities_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "egress_identity",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.network.v1.EgressIdentity"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates an egress identity.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.network.v1.EgressIdentity"
        },
        "x-sylphx-method": "network.egress_identities.update",
        "x-sylphx-permission": "network:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs": {
      "get": {
        "description": "Lists environments in a project.",
        "operationId": "access_envs_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable spec fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ListEnvironmentsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists environments in a project.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "access.envs.list",
        "x-sylphx-permission": "access:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates an environment. Access assigns the id.",
        "operationId": "access_envs_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.access.v1.Environment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.Environment"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an environment. Access assigns the id.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "access.envs.create",
        "x-sylphx-permission": "access:admin",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}": {
      "delete": {
        "description": "Deletes an environment.",
        "operationId": "access_envs_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete every child Resource; without it a parent with children\nfails with FAILED_PRECONDITION.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an environment.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.envs.delete",
        "x-sylphx-permission": "access:admin",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets an environment.",
        "operationId": "access_envs_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.Environment"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an environment.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "access.envs.get",
        "x-sylphx-permission": "access:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates an environment.",
        "operationId": "access_envs_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.access.v1.Environment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.Environment"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates an environment.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.envs.update",
        "x-sylphx-permission": "access:admin",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agent_sessions": {
      "get": {
        "description": "Lists sessions, newest first. With a publishable key, only the caller's\nend user's sessions.",
        "operationId": "agents_agent_sessions_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, limited to `agent`, `end_user` and `state`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.ListAgentSessionsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists sessions, newest first. With a publishable key, only the caller's end user's sessions.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "agents.agent_sessions.list",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Starts a session of an agent, pinned to its current version unless\n`agent_version` names another. Requires a secret key until end-user\nownership is implemented. The session starts idle; `:send` starts its\nfirst turn.",
        "operationId": "agents_agent_sessions_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The session id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "agent_session_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.agents.v1.AgentSession"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.AgentSession"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Starts a session of an agent, pinned to its current version unless `agent_version` names another. Requires a secret key until end-user ownership is implemented. The session starts idle; `:send` starts its first turn.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-method": "agents.agent_sessions.create",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agent_sessions/{agent_session}": {
      "delete": {
        "description": "Deletes a session and its events. A session whose turn is running is\nrefused with `INVALID_STATE` unless `force` is set, which interrupts it\nfirst.",
        "operationId": "agents_agent_sessions_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent_session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the session does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Interrupt a running turn and delete; without it, a running session is\nrefused with `INVALID_STATE`.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a session and its events. A session whose turn is running is refused with `INVALID_STATE` unless `force` is set, which interrupts it first.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "agents.agent_sessions.delete",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a session.",
        "operationId": "agents_agent_sessions_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent_session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.AgentSession"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a session.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "agents.agent_sessions.get",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agent_sessions/{agent_session}/session_events": {
      "get": {
        "description": "Lists a session's events in sequence order. To follow a session, call\nagain with the filter `sequence > N`, N the last sequence read; `wait`\nholds the call open until a newer event is appended or the wait ends.",
        "operationId": "agents_session_events_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent_session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, limited to `type` and `sequence`; for example\n`sequence > 42`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "When no event matches the filter, wait up to this long for one, at most\n60s; unset answers at once.",
            "in": "query",
            "name": "wait",
            "required": false,
            "schema": {
              "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.ListSessionEventsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a session's events in sequence order. To follow a session, call again with the filter `sequence > N`, N the last sequence read; `wait` holds the call open until a newer event is appended or the wait ends.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "RESOURCE_NOT_FOUND",
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "agents.session_events.list",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agent_sessions/{agent_session}/session_events/{session_event}": {
      "get": {
        "description": "Gets a session event.",
        "operationId": "agents_session_events_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent_session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "session_event",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.SessionEvent"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a session event.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "agents.session_events.get",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agent_sessions/{agent_session}:decideApproval": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nAnswers a tool call waiting for approval; the turn continues.",
        "operationId": "agents_agent_sessions_decide_approval",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent_session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "call_id": {
                    "description": "The waiting ToolCall's `id`.",
                    "type": "string"
                  },
                  "decision": {
                    "$ref": "#/components/schemas/sylphx.agents.v1.ApprovalDecision",
                    "description": "The answer."
                  },
                  "reason": {
                    "description": "Why, at most 500 characters; the agent reads it with a rejection.",
                    "type": "string"
                  },
                  "remember": {
                    "description": "Also allow later calls of the same tool in this session without asking\n(\"always allow\"); only with APPROVE.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "call_id",
                  "decision"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.SessionEvent"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Answers a tool call waiting for approval; the turn continues.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "agents.agent_sessions.decide_approval",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agent_sessions/{agent_session}:interrupt": {
      "post": {
        "description": "Stops the running turn at its current step. Calls already made keep\ntheir results; the session becomes idle. A no-op on an idle session.",
        "operationId": "agents_agent_sessions_interrupt",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent_session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "reason": {
                    "description": "Why, recorded on the status event; at most 500 characters.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.AgentSession"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Stops the running turn at its current step. Calls already made keep their results; the session becomes idle. A no-op on an idle session.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "agents.agent_sessions.interrupt",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agent_sessions/{agent_session}:invoke-tool": {
      "post": {
        "description": "Guest execution capability authentication, not an Access management key.\nPreserve any JSON tool result, including scalars and arrays.",
        "operationId": "agents_agent_sessions_invoke_tool",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent_session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "arguments": {
                    "additionalProperties": true,
                    "description": "The tool input, validated against its pinned input schema.",
                    "type": "object"
                  },
                  "op_id": {
                    "description": "The stable operation identifier, reused for idempotent tool-call retries.",
                    "type": "string"
                  },
                  "tool": {
                    "description": "The tool name in the session's pinned agent version.",
                    "type": "string"
                  },
                  "turn": {
                    "description": "The live turn whose execution capability authorizes the call.",
                    "format": "int64",
                    "type": "string"
                  }
                },
                "required": [
                  "turn",
                  "tool",
                  "arguments",
                  "op_id"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/google.protobuf.Value"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Guest execution capability authentication, not an Access management key. Preserve any JSON tool result, including scalars and arrays.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "agents.agent_sessions.invoke_tool",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agent_sessions/{agent_session}:send": {
      "post": {
        "description": "Sends a user message. On an idle or failed session it starts a new turn;\nwhile a turn runs it is refused with `INVALID_STATE` (use `:steer`).\nThe same `Idempotency-Key` returns the same event.",
        "operationId": "agents_agent_sessions_send",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent_session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "message": {
                    "$ref": "#/components/schemas/sylphx.agents.v1.Message",
                    "description": "The message, 1 to 64 parts."
                  }
                },
                "required": [
                  "message"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.SessionEvent"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Sends a user message. On an idle or failed session it starts a new turn; while a turn runs it is refused with `INVALID_STATE` (use `:steer`). The same `Idempotency-Key` returns the same event.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-method": "agents.agent_sessions.send",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agent_sessions/{agent_session}:steer": {
      "post": {
        "description": "Sends a message into the running turn; the agent reads it at its next\nstep. On an idle session it is the same as `:send`.",
        "operationId": "agents_agent_sessions_steer",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent_session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "message": {
                    "$ref": "#/components/schemas/sylphx.agents.v1.Message",
                    "description": "The message, 1 to 64 parts."
                  }
                },
                "required": [
                  "message"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.SessionEvent"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Sends a message into the running turn; the agent reads it at its next step. On an idle session it is the same as `:send`.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "agents.agent_sessions.steer",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agent_sessions/{agent_session}:submitToolResult": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nReturns the result of a client tool call; the turn continues.",
        "operationId": "agents_agent_sessions_submit_tool_result",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent_session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "call_id": {
                    "description": "The waiting client ToolCall's `id`.",
                    "type": "string"
                  },
                  "error": {
                    "description": "Whether the call failed; `output` then holds the error.",
                    "type": "boolean"
                  },
                  "output": {
                    "description": "The result, at most 1 MiB of JSON."
                  }
                },
                "required": [
                  "call_id",
                  "output"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.SessionEvent"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Returns the result of a client tool call; the turn continues.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "agents.agent_sessions.submit_tool_result",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agent_sessions/{agent_session}:tool-catalog": {
      "get": {
        "description": "The immutable pinned HTTP-tool catalog exposed to the guest's MCP bridge.",
        "operationId": "agents_agent_sessions_tool_catalog",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent_session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.ToolCatalogResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "The immutable pinned HTTP-tool catalog exposed to the guest's MCP bridge.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "agents.agent_sessions.tool_catalog",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agents": {
      "get": {
        "description": "Lists agents.",
        "operationId": "agents_agents_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.ListAgentsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists agents.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "agents.agents.list",
        "x-sylphx-permission": "agents:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates an agent and its version 1.",
        "operationId": "agents_agents_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The agent id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "agent_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.agents.v1.Agent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.Agent"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an agent and its version 1.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "agents.agents.create",
        "x-sylphx-permission": "agents:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agents/{agent}": {
      "delete": {
        "description": "Deletes an agent and its versions. An agent with sessions is refused\nwith `INVALID_STATE` unless `force` is set, which deletes them too.",
        "operationId": "agents_agents_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the agent does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete the agent's sessions; without it, an agent with sessions\nis refused with `INVALID_STATE`.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an agent and its versions. An agent with sessions is refused with `INVALID_STATE` unless `force` is set, which deletes them too.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "agents.agents.delete",
        "x-sylphx-permission": "agents:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets an agent.",
        "operationId": "agents_agents_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.Agent"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an agent.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "agents.agents.get",
        "x-sylphx-permission": "agents:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates an agent. A change to `spec` mints the next AgentVersion;\nsessions already started keep the version they pinned.",
        "operationId": "agents_agents_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the agent when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.agents.v1.Agent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.Agent"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates an agent. A change to `spec` mints the next AgentVersion; sessions already started keep the version they pinned.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "agents.agents.update",
        "x-sylphx-permission": "agents:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agents/{agent}/agent_versions": {
      "get": {
        "description": "Lists an agent's versions, newest first.",
        "operationId": "agents_agent_versions_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, limited to `version_number`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.ListAgentVersionsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists an agent's versions, newest first.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "agents.agent_versions.list",
        "x-sylphx-permission": "agents:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agents/{agent}/agent_versions/{agent_version}": {
      "get": {
        "description": "Gets an agent version.",
        "operationId": "agents_agent_versions_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent_version",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.AgentVersion"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an agent version.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "agents.agent_versions.get",
        "x-sylphx-permission": "agents:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agents/{agent}:run": {
      "post": {
        "description": "Atomically admits a pinned task session, initial event and pending turn.",
        "operationId": "agents_agents_run",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "agent",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "agent_session_id": {
                    "description": "The stable session identifier; reusing it for another attempt is refused.",
                    "type": "string"
                  },
                  "agent_version": {
                    "description": "The immutable agent version pinned for this task attempt.",
                    "type": "string",
                    "x-sylphx-resource-reference": "agents.sylphx.com/AgentVersion"
                  },
                  "completion": {
                    "$ref": "#/components/schemas/sylphx.agents.v1.CompletionCall",
                    "description": "The pinned tool call used by the runtime to deliver the terminal result."
                  },
                  "credentials": {
                    "additionalProperties": {
                      "$ref": "#/components/schemas/sylphx.agents.v1.CredentialBinding"
                    },
                    "description": "Captured credential bindings by alias; credentials never enter context.",
                    "type": "object"
                  },
                  "environment": {
                    "$ref": "#/components/schemas/sylphx.agents.v1.EnvironmentSpec",
                    "description": "Optional overrides of the environment in the pinned AgentVersion's frozen\nspec, never the Agent's current head. Omitted or empty with no mask keeps\nthat default unchanged. Only selected fields are overlaid; see\nenvironment_mask. The effective environment must have a supported shape,\nfinite positive TTL and valid repository, network and budget before admission."
                  },
                  "environment_mask": {
                    "description": "Fields of environment to overlay, relative to EnvironmentSpec, using proto\nsnake_case paths such as ttl, repo.uri, repo.revision,\negress.allowed_domains and budget.max_cost_micros. The wire value is a\ncomma-separated string; SDK property naming does not change these paths.\nOmitted or empty infers populated serialized leaf fields recursively,\npreserving unselected siblings from the pinned version. Proto defaults\n(including empty lists) need an explicit mask to reset a selected field.\nSelected lists replace, rather than append to, the inherited list.\nThe sole path \"*\" replaces the whole environment, resetting unpopulated\nfields. Unknown, invalid and output-only paths are rejected, as is a\nnonempty mask without environment. Effective validation also applies to\nexplicit resets and whole-environment replacement.",
                    "type": "string"
                  },
                  "message": {
                    "$ref": "#/components/schemas/sylphx.agents.v1.Message",
                    "description": "The initial task message appended atomically with session acceptance."
                  },
                  "profiles": {
                    "description": "Granted profile mounts for the fresh session lease.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.agents.v1.ProfileMount"
                    },
                    "type": "array"
                  },
                  "renewal": {
                    "$ref": "#/components/schemas/sylphx.agents.v1.RenewalCall",
                    "description": "Optional pinned grant-renewal call, owned by the runtime after acceptance."
                  },
                  "runtime_credential_handle": {
                    "description": "Same-session handle to a caller-owned scoped Access credential. Runtime only,\nnever installed in the guest or sent to the model.",
                    "type": "string",
                    "x-sylphx-sensitive": true
                  },
                  "task_ref": {
                    "description": "Caller-owned opaque reference, not interpreted by Agents.",
                    "type": "string"
                  },
                  "workspace_knowledge": {
                    "additionalProperties": true,
                    "description": "Opaque, claim-pinned workspace knowledge, including its rendered instruction.",
                    "type": "object"
                  }
                },
                "required": [
                  "agent_version",
                  "agent_session_id",
                  "message",
                  "completion",
                  "runtime_credential_handle"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.RunAgentResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Atomically admits a pinned task session, initial event and pending turn.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-method": "agents.agents.run",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agents:capture-credential": {
      "post": {
        "description": "Captures an existing grant for one session and purpose; never issues a key.",
        "operationId": "agents_agents_capture_credential",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "allowed_tools": {
                    "description": "Pinned tool names allowed to inject this credential.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "credential": {
                    "description": "The existing caller-owned credential, stored encrypted and never logged.",
                    "type": "string",
                    "x-sylphx-sensitive": true
                  },
                  "expires_at": {
                    "description": "The issuer-provided expiry of the captured credential.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "purpose": {
                    "description": "execution, completion, or runtime; runtime handles never enter the guest.",
                    "type": "string"
                  },
                  "session": {
                    "description": "The prospective or existing session to bind this handle to.",
                    "type": "string"
                  },
                  "turn": {
                    "description": "The turn allowed to use the execution credential.",
                    "format": "int64",
                    "type": "string"
                  }
                },
                "required": [
                  "session",
                  "turn",
                  "credential",
                  "expires_at",
                  "allowed_tools",
                  "purpose"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.CredentialHandle"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Captures an existing grant for one session and purpose; never issues a key.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "agents.agents.capture_credential",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agents:revoke-credential": {
      "post": {
        "description": "Revokes one captured handle. Repeating the revocation is harmless.",
        "operationId": "agents_agents_revoke_credential",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "handle": {
                    "description": "The opaque handle to revoke; repeated revocation is harmless.",
                    "type": "string",
                    "x-sylphx-sensitive": true
                  }
                },
                "required": [
                  "handle"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Revokes one captured handle. Repeating the revocation is harmless.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "agents.agents.revoke_credential",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/agents:rotate-credential": {
      "post": {
        "description": "Rotates the captured value under the same handle with generation fencing.",
        "operationId": "agents_agents_rotate_credential",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "credential": {
                    "description": "The replacement issuer-provided credential, stored encrypted.",
                    "type": "string",
                    "x-sylphx-sensitive": true
                  },
                  "expires_at": {
                    "description": "The issuer-provided expiry of the replacement credential.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "generation": {
                    "description": "The current handle generation; stale rotations are refused.",
                    "format": "int64",
                    "type": "string"
                  },
                  "handle": {
                    "description": "The opaque handle whose captured credential is being replaced.",
                    "type": "string",
                    "x-sylphx-sensitive": true
                  }
                },
                "required": [
                  "handle",
                  "generation",
                  "credential",
                  "expires_at"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.CredentialHandle"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Rotates the captured value under the same handle with generation fencing.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "agents.agents.rotate_credential",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/api_keys": {
      "get": {
        "description": "Lists API keys in an environment, or the org-wide keys of an org.",
        "operationId": "access_api_keys_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable spec fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ListApiKeysResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists API keys in an environment, or the org-wide keys of an org.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "access.api_keys.list",
        "x-sylphx-permission": "access:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates an API key. Access assigns the id.",
        "operationId": "access_api_keys_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an API key. Access assigns the id.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "access.api_keys.create",
        "x-sylphx-permission": "access:keys:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/api_keys/{api_key}": {
      "delete": {
        "description": "Deletes an API key.",
        "operationId": "access_api_keys_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "api_key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an API key.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.api_keys.delete",
        "x-sylphx-permission": "access:keys:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets an API key.",
        "operationId": "access_api_keys_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "api_key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an API key.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "access.api_keys.get",
        "x-sylphx-permission": "access:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates an API key.",
        "operationId": "access_api_keys_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "api_key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates an API key.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.api_keys.update",
        "x-sylphx-permission": "access:keys:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/api_keys/{api_key}:revoke": {
      "post": {
        "description": "Revokes an API key immediately; revocation propagates on its own fast\npath, ahead of the bulk key data.",
        "operationId": "access_api_keys_revoke",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "api_key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Revoke only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without revoking.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Revokes an API key immediately; revocation propagates on its own fast path, ahead of the bulk key data.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.api_keys.revoke",
        "x-sylphx-permission": "access:keys:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/api_keys/{api_key}:roll": {
      "post": {
        "description": "Rolls an API key: returns a new key with the same spec and revokes the\nold one after the grace period.",
        "operationId": "access_api_keys_roll",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "api_key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Roll only if the current etag matches.",
                    "type": "string"
                  },
                  "grace_period": {
                    "description": "How long the old key keeps verifying; default 24h.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without rolling.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ApiKey"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Rolls an API key: returns a new key with the same spec and revokes the old one after the grace period.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.api_keys.roll",
        "x-sylphx-permission": "access:keys:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/assets": {
      "get": {
        "description": "Lists assets. The filter is limited to `kind`, `state`, and\n`review_state`.",
        "operationId": "assets_assets_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, limited to `kind`, `state`, and `review_state`; for\nexample `kind = ASSET_KIND_IMAGE AND state = ASSET_STATE_READY`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.assets.v1.ListAssetsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists assets. The filter is limited to `kind`, `state`, and `review_state`.",
        "tags": [
          "assets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "assets.assets.list",
        "x-sylphx-permission": "assets:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/assets/{asset}": {
      "get": {
        "description": "Gets an asset.",
        "operationId": "assets_assets_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "asset",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.assets.v1.Asset"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an asset.",
        "tags": [
          "assets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "assets.assets.get",
        "x-sylphx-permission": "assets:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/assets/{asset}:approveVariant": {
      "post": {
        "description": "Approves one variant and records who approved it.",
        "operationId": "assets_assets_approve_variant",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "asset",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "content_hash": {
                    "description": "The content hash of the variant, 64 lowercase hex characters.",
                    "type": "string"
                  }
                },
                "required": [
                  "content_hash"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.assets.v1.Asset"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Approves one variant and records who approved it.",
        "tags": [
          "assets"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "assets.assets.approve_variant",
        "x-sylphx-permission": "assets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/assets/{asset}:rejectVariant": {
      "post": {
        "description": "Rejects one variant. Its slot is freed and the next `:generate` fills it;\nthe rejected file keeps serving at its URL.",
        "operationId": "assets_assets_reject_variant",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "asset",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "content_hash": {
                    "description": "The content hash of the variant, 64 lowercase hex characters.",
                    "type": "string"
                  }
                },
                "required": [
                  "content_hash"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.assets.v1.Asset"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Rejects one variant. Its slot is freed and the next `:generate` fills it; the rejected file keeps serving at its URL.",
        "tags": [
          "assets"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "assets.assets.reject_variant",
        "x-sylphx-permission": "assets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/assets/{asset}:retireVariant": {
      "post": {
        "description": "Retires one variant. Its URL answers 404 from then on and its slot is\nfreed.",
        "operationId": "assets_assets_retire_variant",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "asset",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "content_hash": {
                    "description": "The content hash of the variant, 64 lowercase hex characters.",
                    "type": "string"
                  },
                  "reason": {
                    "description": "Why the variant is retired, at most 500 characters.",
                    "type": "string"
                  }
                },
                "required": [
                  "content_hash"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.assets.v1.Asset"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Retires one variant. Its URL answers 404 from then on and its slot is freed.",
        "tags": [
          "assets"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "assets.assets.retire_variant",
        "x-sylphx-permission": "assets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/assets:export": {
      "get": {
        "description": "Exports every servable variant in the environment as one flat, paged\nmanifest, independent of the keys the code declares. Rejected and retired\nvariants are left out unless `filter` asks for their `review_state`. The\nlast page carries a digest a client checks to know it holds the whole set.",
        "operationId": "assets_assets_export",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many items; default 100, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, limited to `kind` and `review_state`; for example\n`kind = ASSET_KIND_IMAGE`. Without a `review_state` term, rejected and\nretired variants are left out.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.assets.v1.ExportAssetsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Exports every servable variant in the environment as one flat, paged manifest, independent of the keys the code declares. Rejected and retired variants are left out unless `filter` asks for their `review_state`. The last page carries a digest a client checks to know it holds the whole set.",
        "tags": [
          "assets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "assets.assets.export",
        "x-sylphx-permission": "assets:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/assets:generate": {
      "post": {
        "description": "Records the recipes as assets and generates the variants that are\nmissing. Each call is idempotent and works within a bounded time; call\nagain until `pending` is 0.",
        "operationId": "assets_assets_generate",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "recipes": {
                    "description": "The recipes the code declares; 1 to 1000.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.assets.v1.AssetRecipe"
                    },
                    "type": "array"
                  },
                  "validate_only": {
                    "description": "Validate the recipes and return the counts without writing or\ngenerating anything.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "recipes"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.assets.v1.GenerateAssetsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Records the recipes as assets and generates the variants that are missing. Each call is idempotent and works within a bounded time; call again until `pending` is 0.",
        "tags": [
          "assets"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "RATE_LIMITED",
          "SPEND_LIMIT_REACHED",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "assets.assets.generate",
        "x-sylphx-permission": "assets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/assets:lock": {
      "post": {
        "description": "Returns the `assets.lock` entries and canonical text for the keys the call\nnames, and only those. A read with a request body, like a query.",
        "operationId": "assets_assets_lock",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "keys": {
                    "description": "The logical keys the code declares, 1 to 5000, each 16 lowercase hex\ncharacters. The lock holds only these, so a removed recipe drops out.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "keys"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.assets.v1.LockAssetsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Returns the `assets.lock` entries and canonical text for the keys the call names, and only those. A read with a request body, like a query.",
        "tags": [
          "assets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "assets.assets.lock",
        "x-sylphx-permission": "assets:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/auth_configs/{auth_config}": {
      "get": {
        "description": "Gets an auth config.",
        "operationId": "auth_auth_configs_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "auth_config",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.AuthConfig"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an auth config.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "auth.auth_configs.get",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates an auth config.",
        "operationId": "auth_auth_configs_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "auth_config",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the auth config when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.auth.v1.AuthConfig"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.AuthConfig"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates an auth config.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.auth_configs.update",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/broadcasts": {
      "get": {
        "description": "Lists broadcasts.",
        "operationId": "notify_broadcasts_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListBroadcastsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists broadcasts.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.broadcasts.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a broadcast.",
        "operationId": "notify_broadcasts_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The broadcast id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "broadcast_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Broadcast"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Broadcast"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a broadcast.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "notify.broadcasts.create",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/broadcasts/{broadcast}": {
      "delete": {
        "description": "Deletes a broadcast.",
        "operationId": "notify_broadcasts_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "broadcast",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the broadcast does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a broadcast.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.broadcasts.delete",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a broadcast.",
        "operationId": "notify_broadcasts_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "broadcast",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Broadcast"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a broadcast.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.broadcasts.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a broadcast.",
        "operationId": "notify_broadcasts_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "broadcast",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the broadcast when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Broadcast"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Broadcast"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a broadcast.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.broadcasts.update",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/broadcasts/{broadcast}:cancel": {
      "post": {
        "description": "Cancels a Broadcast; messages already admitted still deliver.",
        "operationId": "notify_broadcasts_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "broadcast",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Broadcast"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Cancels a Broadcast; messages already admitted still deliver.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "notify.broadcasts.cancel",
        "x-sylphx-permission": "notify:send",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/broadcasts/{broadcast}:send": {
      "post": {
        "description": "Sends a Broadcast now.",
        "operationId": "notify_broadcasts_send",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "broadcast",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without writing anything.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Broadcast"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Sends a Broadcast now.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "notify.broadcasts.send",
        "x-sylphx-permission": "notify:send",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/buckets": {
      "get": {
        "description": "Lists buckets in a environment.",
        "operationId": "data_buckets_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ListBucketsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists buckets in a environment.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "data.buckets.list",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a bucket. The Operation is done when the controller settles it.",
        "operationId": "data_buckets_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "bucket_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.data.v1.Bucket"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a bucket. The Operation is done when the controller settles it.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.data.v1.Bucket"
        },
        "x-sylphx-method": "data.buckets.create",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/buckets/{bucket}": {
      "delete": {
        "description": "Deletes a bucket. Fails while `spec.deletion_protection` is set.",
        "operationId": "data_buckets_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a bucket. Fails while `spec.deletion_protection` is set.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "DELETION_PROTECTED",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "data.buckets.delete",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a bucket.",
        "operationId": "data_buckets_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.Bucket"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a bucket.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.buckets.get",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a bucket.",
        "operationId": "data_buckets_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.data.v1.Bucket"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a bucket.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.data.v1.Bucket"
        },
        "x-sylphx-method": "data.buckets.update",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/buckets/{bucket}:connect": {
      "post": {
        "description": "Returns how to connect to the bucket: its endpoint and its own engine\ncredentials. The credentials are not API keys and are returned only here.",
        "operationId": "data_buckets_connect",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ConnectBucketResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Returns how to connect to the bucket: its endpoint and its own engine credentials. The credentials are not API keys and are returned only here.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE"
        ],
        "x-sylphx-method": "data.buckets.connect",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/buckets/{bucket}:rotateCredentials": {
      "post": {
        "description": "Replaces the bucket's engine credentials; the old ones stop working once\nthe new ones are served.",
        "operationId": "data_buckets_rotate_credentials",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without acting.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Replaces the bucket's engine credentials; the old ones stop working once the new ones are served.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.data.v1.Bucket"
        },
        "x-sylphx-method": "data.buckets.rotate_credentials",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/catalogs": {
      "get": {
        "description": "Lists catalogs.",
        "operationId": "localization_catalogs_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.ListCatalogsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists catalogs.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "localization.catalogs.list",
        "x-sylphx-permission": "localization:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a catalog.",
        "operationId": "localization_catalogs_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The catalog id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "catalog_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.localization.v1.Catalog"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.Catalog"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a catalog.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "localization.catalogs.create",
        "x-sylphx-permission": "localization:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/catalogs/{catalog}": {
      "delete": {
        "description": "Deletes a catalog.",
        "operationId": "localization_catalogs_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "catalog",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the catalog does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete the catalog's entries; without it, a catalog that has entries\nis refused with `INVALID_STATE`.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a catalog.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "localization.catalogs.delete",
        "x-sylphx-permission": "localization:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a catalog.",
        "operationId": "localization_catalogs_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "catalog",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.Catalog"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a catalog.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "localization.catalogs.get",
        "x-sylphx-permission": "localization:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a catalog.",
        "operationId": "localization_catalogs_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "catalog",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the catalog when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.localization.v1.Catalog"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.Catalog"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a catalog.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "localization.catalogs.update",
        "x-sylphx-permission": "localization:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/catalogs/{catalog}/entries": {
      "get": {
        "description": "Lists catalog entries. The filter is limited to `state`, `locale`, and\n`qa_state`.",
        "operationId": "localization_entries_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "catalog",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, limited to `state`, `locale`, and `qa_state`; for example\n`state = ENTRY_STATE_ACTIVE AND locale = \"ja\" AND qa_state = QA_STATE_FAILED`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.ListCatalogEntriesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists catalog entries. The filter is limited to `state`, `locale`, and `qa_state`.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "localization.entries.list",
        "x-sylphx-permission": "localization:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/catalogs/{catalog}/entries/{entry}": {
      "get": {
        "description": "Gets a catalog entry.",
        "operationId": "localization_entries_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "catalog",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "entry",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.CatalogEntry"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a catalog entry.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "localization.entries.get",
        "x-sylphx-permission": "localization:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/catalogs/{catalog}/entries/{entry}:pinTranslation": {
      "post": {
        "description": "Sets the text of one locale as a human override that AI never overwrites.\nQA runs on the text first; a text with a QA error is rejected with\n`INVALID_FIELD`, and the problem lists the findings.",
        "operationId": "localization_entries_pin_translation",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "catalog",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "entry",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "locale": {
                    "description": "The target locale.",
                    "type": "string"
                  },
                  "text": {
                    "description": "The translated message, a Unicode MessageFormat 2 pattern.",
                    "type": "string"
                  }
                },
                "required": [
                  "locale",
                  "text"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.CatalogEntry"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Sets the text of one locale as a human override that AI never overwrites. QA runs on the text first; a text with a QA error is rejected with `INVALID_FIELD`, and the problem lists the findings.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "localization.entries.pin_translation",
        "x-sylphx-permission": "localization:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/catalogs/{catalog}/entries/{entry}:unpinTranslation": {
      "post": {
        "description": "Removes the human override of one locale; the next sync may translate it\nagain.",
        "operationId": "localization_entries_unpin_translation",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "catalog",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "entry",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "locale": {
                    "description": "The target locale.",
                    "type": "string"
                  }
                },
                "required": [
                  "locale"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.CatalogEntry"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Removes the human override of one locale; the next sync may translate it again.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "localization.entries.unpin_translation",
        "x-sylphx-permission": "localization:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/catalogs/{catalog}:export": {
      "post": {
        "description": "Returns the catalog's files per locale in the requested format, with the QA\nreport. A read with a request body, like a query.",
        "operationId": "localization_catalogs_export",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "catalog",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "format": {
                    "$ref": "#/components/schemas/sylphx.localization.v1.Format",
                    "description": "The format of the files."
                  },
                  "locales": {
                    "description": "The locales to export; default every target locale and the pseudo-locales.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "source_fallback": {
                    "description": "Emit the source text for keys that have no passing translation, for\nruntimes that do not fall back to the source themselves.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "format"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.ExportCatalogResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Returns the catalog's files per locale in the requested format, with the QA report. A read with a request body, like a query.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "localization.catalogs.export",
        "x-sylphx-permission": "localization:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/catalogs/{catalog}:sync": {
      "post": {
        "description": "Reads the source files and the committed translations into the catalog,\nthen translates what is new or stale. Each call is idempotent and works\nwithin a bounded time; call again until `pending` is 0.",
        "operationId": "localization_catalogs_sync",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "catalog",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "format": {
                    "$ref": "#/components/schemas/sylphx.localization.v1.Format",
                    "description": "The format of the files."
                  },
                  "sources": {
                    "description": "The source-locale files; 1 to 500.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.localization.v1.CatalogFile"
                    },
                    "type": "array"
                  },
                  "translations": {
                    "description": "The committed target-locale files; at most 10000. A text that differs from\nthe service's last export is recorded as a pinned human override.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.localization.v1.CatalogFile"
                    },
                    "type": "array"
                  },
                  "validate_only": {
                    "description": "Validate the files and return the counts without writing or translating.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "format",
                  "sources"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.SyncCatalogResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Reads the source files and the committed translations into the catalog, then translates what is new or stale. Each call is idempotent and works within a bounded time; call again until `pending` is 0.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "RATE_LIMITED",
          "SPEND_LIMIT_REACHED",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "localization.catalogs.sync",
        "x-sylphx-permission": "localization:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/checkout_policies/{checkout_policy}": {
      "get": {
        "description": "Gets the environment's checkout policy: which buyer countries consumer\ncheckout refuses. An environment that never wrote one refuses none.",
        "operationId": "money_checkout_policies_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "checkout_policy",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.CheckoutPolicy"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets the environment's checkout policy: which buyer countries consumer checkout refuses. An environment that never wrote one refuses none.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.checkout_policies.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates the environment's checkout policy, whole.",
        "operationId": "money_checkout_policies_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "checkout_policy",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the policy when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.CheckoutPolicy"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.CheckoutPolicy"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates the environment's checkout policy, whole.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.checkout_policies.update",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/checkout_sessions": {
      "post": {
        "description": "Creates a hosted checkout for a subject.",
        "operationId": "money_checkout_sessions_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id, the final name segment; the server assigns one when empty.",
            "in": "query",
            "name": "checkout_session_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.CheckoutSession"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.CheckoutSession"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a hosted checkout for a subject.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "INVALID_STATE",
          "UNAVAILABLE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.checkout_sessions.create",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/checkout_sessions/{checkout_session}": {
      "get": {
        "description": "Gets a checkout session.",
        "operationId": "money_checkout_sessions_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "checkout_session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.CheckoutSession"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a checkout session.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.checkout_sessions.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/config_changes": {
      "get": {
        "description": "Lists config changes in an environment.",
        "operationId": "config_config_changes_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter; `target = \"<flag or segment name>\"` is supported.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.config.v1.ListConfigChangesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists config changes in an environment.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "config.config_changes.list",
        "x-sylphx-permission": "config:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/config_changes/{config_change}": {
      "get": {
        "description": "Gets a config change.",
        "operationId": "config_config_changes_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "config_change",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.config.v1.ConfigChange"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a config change.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "config.config_changes.get",
        "x-sylphx-permission": "config:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/config_flags": {
      "get": {
        "description": "Lists config flags in an environment.",
        "operationId": "config_config_flags_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.config.v1.ListConfigFlagsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists config flags in an environment.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "config.config_flags.list",
        "x-sylphx-permission": "config:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a config flag; the Operation is done when every cell serves it.",
        "operationId": "config_config_flags_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the new config flag, the key evaluators ask for; the server assigns one when\nempty.",
            "in": "query",
            "name": "config_flag_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.config.v1.ConfigFlag"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a config flag; the Operation is done when every cell serves it.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.config.v1.ConfigFlag"
        },
        "x-sylphx-method": "config.config_flags.create",
        "x-sylphx-permission": "config:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/config_flags/{config_flag}": {
      "delete": {
        "description": "Deletes a config flag; evaluators then get their compiled-in fallback.",
        "operationId": "config_config_flags_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "config_flag",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a config flag; evaluators then get their compiled-in fallback.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "config.config_flags.delete",
        "x-sylphx-permission": "config:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a config flag.",
        "operationId": "config_config_flags_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "config_flag",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.config.v1.ConfigFlag"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a config flag.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "config.config_flags.get",
        "x-sylphx-permission": "config:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a config flag; the change rolls out in waves and the Operation is\ndone when every cell serves it.",
        "operationId": "config_config_flags_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "config_flag",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.config.v1.ConfigFlag"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a config flag; the change rolls out in waves and the Operation is done when every cell serves it.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.config.v1.ConfigFlag"
        },
        "x-sylphx-method": "config.config_flags.update",
        "x-sylphx-permission": "config:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/config_flags:evaluate": {
      "post": {
        "description": "Evaluates config flags of an environment for one evaluation context:\neach flag's value, and why. Browsers and mobile apps call it with a\npublishable key holding `config:evaluate`, which reads values, never\nrules.",
        "operationId": "config_config_flags_evaluate",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "config_flags": {
                    "description": "The ids of the flags to evaluate; empty evaluates every flag of the\nenvironment. An unknown id answers reason NOT_FOUND.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "context": {
                    "$ref": "#/components/schemas/sylphx.config.v1.EvaluationContext",
                    "description": "Who and what the evaluation is for."
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.config.v1.EvaluateConfigFlagsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Evaluates config flags of an environment for one evaluation context: each flag's value, and why. Browsers and mobile apps call it with a publishable key holding `config:evaluate`, which reads values, never rules.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "config.config_flags.evaluate",
        "x-sylphx-permission": "config:evaluate",
        "x-sylphx-publishable-ok": true,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/config_flags:snapshot": {
      "get": {
        "description": "The environment's flags and segments in one read, for SDKs that\nevaluate locally. Poll it with `if_none_match` set to the last `etag`:\nan unchanged ruleset answers `not_modified` and nothing else.",
        "operationId": "config_config_flags_snapshot",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The `etag` of the snapshot the caller holds; unchanged answers\n`not_modified`.",
            "in": "query",
            "name": "if_none_match",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.config.v1.SnapshotConfigFlagsResponse"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "The environment's flags and segments in one read, for SDKs that evaluate locally. Poll it with `if_none_match` set to the last `etag`: an unchanged ruleset answers `not_modified` and nothing else.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED"
        ],
        "x-sylphx-method": "config.config_flags.snapshot",
        "x-sylphx-permission": "config:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/config_segments": {
      "get": {
        "description": "Lists config segments in an environment.",
        "operationId": "config_config_segments_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.config.v1.ListConfigSegmentsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists config segments in an environment.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "config.config_segments.list",
        "x-sylphx-permission": "config:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a config segment.",
        "operationId": "config_config_segments_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the new config segment, what IN_SEGMENT names.",
            "in": "query",
            "name": "config_segment_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.config.v1.ConfigSegment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a config segment.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.config.v1.ConfigSegment"
        },
        "x-sylphx-method": "config.config_segments.create",
        "x-sylphx-permission": "config:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/config_segments/{config_segment}": {
      "delete": {
        "description": "Deletes a config segment; refused while a flag names it.",
        "operationId": "config_config_segments_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "config_segment",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a config segment; refused while a flag names it.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "config.config_segments.delete",
        "x-sylphx-permission": "config:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a config segment.",
        "operationId": "config_config_segments_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "config_segment",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.config.v1.ConfigSegment"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a config segment.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "config.config_segments.get",
        "x-sylphx-permission": "config:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a config segment; every flag naming it follows.",
        "operationId": "config_config_segments_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "config_segment",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.config.v1.ConfigSegment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a config segment; every flag naming it follows.",
        "tags": [
          "config"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.config.v1.ConfigSegment"
        },
        "x-sylphx-method": "config.config_segments.update",
        "x-sylphx-permission": "config:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/connectors": {
      "get": {
        "description": "Lists connectors.",
        "operationId": "events_connectors_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over filterable fields: `kind = email`, `state = active`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.ListConnectorsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists connectors.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "events.connectors.list",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/connectors/{connector}": {
      "get": {
        "description": "Gets a connector.",
        "operationId": "events_connectors_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "connector",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.Connector"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a connector.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "events.connectors.get",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/credit_grants": {
      "get": {
        "description": "Lists credit grants.",
        "operationId": "money_credit_grants_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, for example `subject = \"…\"`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListCreditGrantsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists credit grants.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.credit_grants.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Gives a subject credit. Append-only: a change is a new grant that supersedes the old. Refused with INVALID_STATE (`tax_treatment_unsupported`) for `post_tax_settlement` while the merchant has automatic tax on.",
        "operationId": "money_credit_grants_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.CreditGrant"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.CreditGrant"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gives a subject credit. Append-only: a change is a new grant that supersedes the old. Refused with INVALID_STATE (`tax_treatment_unsupported`) for `post_tax_settlement` while the merchant has automatic tax on.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "UNKNOWN_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.credit_grants.create",
        "x-sylphx-permission": "billing:credits.approve",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/credit_grants/{credit_grant}": {
      "get": {
        "description": "Gets a credit grant.",
        "operationId": "money_credit_grants_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "credit_grant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.CreditGrant"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a credit grant.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.credit_grants.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_organizations": {
      "get": {
        "description": "Lists customer organizations.",
        "operationId": "auth_customer_organizations_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.ListCustomerOrganizationsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists customer organizations.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "auth.customer_organizations.list",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a customer organization.",
        "operationId": "auth_customer_organizations_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The customer organization id, the final name segment; the server assigns\none when empty.",
            "in": "query",
            "name": "customer_organization_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "The organization's first owner, an active end user of the same\nenvironment. The organization and its `owner` membership are created in\none transaction, and the call honours `Idempotency-Key`: a retry returns\nthe organization the first call created. Naming a person is explicit app\nauthority: the app vouches for its own tenant. Empty creates an\norganization without members; creating then calling `CreateMembership` is\nnot atomic.",
            "in": "query",
            "name": "owner_end_user",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.auth.v1.CustomerOrganization"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.CustomerOrganization"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a customer organization.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "auth.customer_organizations.create",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}": {
      "delete": {
        "description": "Deletes a customer organization.",
        "operationId": "auth_customer_organizations_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the customer organization does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also close every membership.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a customer organization.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.customer_organizations.delete",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a customer organization.",
        "operationId": "auth_customer_organizations_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.CustomerOrganization"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a customer organization.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "auth.customer_organizations.get",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a customer organization.",
        "operationId": "auth_customer_organizations_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the customer organization when it does not exist (declarative\nupsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.auth.v1.CustomerOrganization"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.CustomerOrganization"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a customer organization.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.customer_organizations.update",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/email_domains": {
      "get": {
        "description": "Lists email domains.",
        "operationId": "auth_email_domains_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.ListEmailDomainsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists email domains.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "auth.email_domains.list",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates an email domain; the answer names the TXT record to publish.",
        "operationId": "auth_email_domains_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The email domain id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "email_domain_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.auth.v1.EmailDomain"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.EmailDomain"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an email domain; the answer names the TXT record to publish.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "auth.email_domains.create",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/email_domains/{email_domain}": {
      "delete": {
        "description": "Deletes an email domain.",
        "operationId": "auth_email_domains_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "email_domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the email domain does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an email domain.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.email_domains.delete",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets an email domain.",
        "operationId": "auth_email_domains_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "email_domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.EmailDomain"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an email domain.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "auth.email_domains.get",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/email_domains/{email_domain}:verify": {
      "post": {
        "description": "Looks up the domain's TXT record now; found, the domain is verified.",
        "operationId": "auth_email_domains_verify",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "email_domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.EmailDomain"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Looks up the domain's TXT record now; found, the domain is verified.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.email_domains.verify",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/invitations": {
      "get": {
        "description": "Lists invitations.",
        "operationId": "auth_invitations_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.ListInvitationsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists invitations.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "auth.invitations.list",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates an invitation.",
        "operationId": "auth_invitations_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The invitation id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "invitation_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.auth.v1.Invitation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.Invitation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an invitation.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "auth.invitations.create",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/invitations/{invitation}": {
      "get": {
        "description": "Gets an invitation.",
        "operationId": "auth_invitations_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "invitation",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.Invitation"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an invitation.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "auth.invitations.get",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/invitations/{invitation}:accept": {
      "post": {
        "description": "Accepts a pending invitation for an end user whose verified email is the\ninvited address, and creates the membership.",
        "operationId": "auth_invitations_accept",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "invitation",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "end_user": {
                    "description": "The accepting end user; its verified email must be the invited address.",
                    "type": "string",
                    "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
                  }
                },
                "required": [
                  "end_user"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.Invitation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Accepts a pending invitation for an end user whose verified email is the invited address, and creates the membership.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.invitations.accept",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/invitations/{invitation}:revoke": {
      "post": {
        "description": "Revokes a pending invitation.",
        "operationId": "auth_invitations_revoke",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "invitation",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.Invitation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Revokes a pending invitation.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.invitations.revoke",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/memberships": {
      "get": {
        "description": "Lists memberships.",
        "operationId": "auth_memberships_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.ListMembershipsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists memberships.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "auth.memberships.list",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a membership.",
        "operationId": "auth_memberships_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The membership id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "membership_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.auth.v1.Membership"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.Membership"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a membership.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "auth.memberships.create",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/memberships/{membership}": {
      "delete": {
        "description": "Deletes a membership.",
        "operationId": "auth_memberships_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "membership",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the membership does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a membership.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.memberships.delete",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a membership.",
        "operationId": "auth_memberships_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "membership",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.Membership"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a membership.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "auth.memberships.get",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a membership.",
        "operationId": "auth_memberships_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_organization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "membership",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.auth.v1.Membership"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.Membership"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a membership.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.memberships.update",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_subscriptions": {
      "get": {
        "description": "Lists customer subscriptions, newest first.",
        "operationId": "money_customer_subscriptions_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListCustomerSubscriptionsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists customer subscriptions, newest first.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.customer_subscriptions.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_subscriptions/{customer_subscription}": {
      "get": {
        "description": "Gets a customer subscription.",
        "operationId": "money_customer_subscriptions_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.CustomerSubscription"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a customer subscription.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.customer_subscriptions.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_subscriptions/{customer_subscription}:cancel": {
      "post": {
        "description": "Cancels a web subscription, now or at the period end, and optionally\nrefunds its last payment (for example a statutory cancellation window).",
        "operationId": "money_customer_subscriptions_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "at_period_end": {
                    "description": "End it at the period end (true) or now (false).",
                    "type": "boolean"
                  },
                  "refund_last_payment": {
                    "description": "Refund the last payment in full; only with `at_period_end` false.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.CustomerSubscription"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Cancels a web subscription, now or at the period end, and optionally refunds its last payment (for example a statutory cancellation window).",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "money.customer_subscriptions.cancel",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_subscriptions/{customer_subscription}:changePlan": {
      "post": {
        "description": "Move a web subscription onto another recurring catalog plan.\n\nStripe changes the subscription's one item and bills the difference as\n`proration_behavior` says; Money reads the subscription back and replaces\nits entitlements from it. Needs an `Idempotency-Key` unless `validate_only`.\nA store subscription is refused (`store_managed`): the store owns it.",
        "operationId": "money_customer_subscriptions_change_plan",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "price": {
                    "description": "The key of the product's recurring price (for example monthly or yearly).\nOptional when the product has one recurring price.",
                    "type": "string"
                  },
                  "product": {
                    "description": "The key of the catalog product to move to.",
                    "type": "string"
                  },
                  "proration_behavior": {
                    "$ref": "#/components/schemas/sylphx.money.v1.ProrationBehavior",
                    "description": "How the change is billed; unspecified is `create_prorations`."
                  },
                  "validate_only": {
                    "description": "Run every check and answer the subscription as it would read, without\nchanging anything.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "product"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.CustomerSubscription"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Move a web subscription onto another recurring catalog plan.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "money.customer_subscriptions.change_plan",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_subscriptions/{customer_subscription}:resume": {
      "post": {
        "description": "Resumes a web subscription set to cancel at its period end.",
        "operationId": "money_customer_subscriptions_resume",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.CustomerSubscription"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Resumes a web subscription set to cancel at its period end.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "money.customer_subscriptions.resume",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/customer_subscriptions/{customer_subscription}:updateQuantity": {
      "post": {
        "description": "Changes the seat quantity of a web subscription, now, and syncs the\nprocessor's subscription item to it. A retry with the same\n`Idempotency-Key` (required) and the same request changes nothing twice.",
        "operationId": "money_customer_subscriptions_update_quantity",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "customer_subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "proration_behavior": {
                    "$ref": "#/components/schemas/sylphx.money.v1.ProrationBehavior",
                    "description": "How the change is billed; unspecified is `create_prorations`."
                  },
                  "quantity": {
                    "description": "The new quantity (seats) of the subscription's one item; at least 1.\nTo end the subscription, cancel it.",
                    "format": "int64",
                    "type": "string"
                  }
                },
                "required": [
                  "quantity"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.CustomerSubscription"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Changes the seat quantity of a web subscription, now, and syncs the processor's subscription item to it. A retry with the same `Idempotency-Key` (required) and the same request changes nothing twice.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "money.customer_subscriptions.update_quantity",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/databases": {
      "get": {
        "description": "Lists databases in a environment.",
        "operationId": "data_databases_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ListDatabasesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists databases in a environment.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "data.databases.list",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a database. The Operation is done when the controller settles it.",
        "operationId": "data_databases_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "database_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.data.v1.Database"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a database. The Operation is done when the controller settles it.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.data.v1.Database"
        },
        "x-sylphx-method": "data.databases.create",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/databases/{database}": {
      "delete": {
        "description": "Deletes a database. Fails while `spec.deletion_protection` is set.",
        "operationId": "data_databases_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "database",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a database. Fails while `spec.deletion_protection` is set.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "DELETION_PROTECTED",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "data.databases.delete",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a database.",
        "operationId": "data_databases_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "database",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.Database"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a database.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.databases.get",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a database.",
        "operationId": "data_databases_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "database",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.data.v1.Database"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a database.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.data.v1.Database"
        },
        "x-sylphx-method": "data.databases.update",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/databases/{database}:connect": {
      "post": {
        "description": "Returns how to connect to the database: its endpoint and its own engine\ncredentials. The credentials are not API keys and are returned only here.",
        "operationId": "data_databases_connect",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "database",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "profile": {
                    "$ref": "#/components/schemas/sylphx.data.v1.ConnectionProfile",
                    "description": "POOLED (default) or DIRECT."
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ConnectDatabaseResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Returns how to connect to the database: its endpoint and its own engine credentials. The credentials are not API keys and are returned only here.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE"
        ],
        "x-sylphx-method": "data.databases.connect",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/databases/{database}:restore": {
      "post": {
        "description": "Restores the database in place to a point in time inside its retention\nwindow; the database is unavailable while it restores.",
        "operationId": "data_databases_restore",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "database",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "restore_time": {
                    "description": "The point in time to restore to.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without acting.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "restore_time"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Restores the database in place to a point in time inside its retention window; the database is unavailable while it restores.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.data.v1.Database"
        },
        "x-sylphx-method": "data.databases.restore",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/databases/{database}:rotateCredentials": {
      "post": {
        "description": "Replaces the database's engine credentials; the old ones stop working once\nthe new ones are served.",
        "operationId": "data_databases_rotate_credentials",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "database",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without acting.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Replaces the database's engine credentials; the old ones stop working once the new ones are served.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.data.v1.Database"
        },
        "x-sylphx-method": "data.databases.rotate_credentials",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/distributed_jobs": {
      "get": {
        "description": "Lists distributed jobs.",
        "operationId": "workflows_distributed_jobs_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.ListDistributedJobsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists distributed jobs.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "workflows.distributed_jobs.list",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a distributed job.",
        "operationId": "workflows_distributed_jobs_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The distributed job id, the final name segment: `[a-z][a-z0-9-]{0,62}`.",
            "in": "query",
            "name": "distributed_job_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedJob"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a distributed job.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.workflows.v1.DistributedJob"
        },
        "x-sylphx-method": "workflows.distributed_jobs.create",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/distributed_jobs/{distributed_job}": {
      "delete": {
        "description": "Deletes a distributed job.",
        "operationId": "workflows_distributed_jobs_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the distributed job does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also cancel active runs; without it a job with an active run fails with\nINVALID_STATE.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a distributed job.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "workflows.distributed_jobs.delete",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a distributed job.",
        "operationId": "workflows_distributed_jobs_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedJob"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a distributed job.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "workflows.distributed_jobs.get",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a distributed job. Runs already started keep the generation they\npinned.",
        "operationId": "workflows_distributed_jobs_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the distributed job when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedJob"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a distributed job. Runs already started keep the generation they pinned.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.workflows.v1.DistributedJob"
        },
        "x-sylphx-method": "workflows.distributed_jobs.update",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/distributed_jobs/{distributed_job}/distributed_runs": {
      "get": {
        "description": "Lists a distributed job's runs, newest first.",
        "operationId": "workflows_distributed_runs_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.ListDistributedRunsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a distributed job's runs, newest first.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "workflows.distributed_runs.list",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Starts a run of a distributed job. The same `Idempotency-Key` returns the\nsame run for 24h.",
        "operationId": "workflows_distributed_runs_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The run id, the final name segment; the server assigns one when empty.",
            "in": "query",
            "name": "distributed_run_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without starting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedRun"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedRun"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Starts a run of a distributed job. The same `Idempotency-Key` returns the same run for 24h.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "workflows.distributed_runs.create",
        "x-sylphx-permission": "workflows:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/distributed_jobs/{distributed_job}/distributed_runs/{distributed_run}": {
      "get": {
        "description": "Gets a distributed run: its state, shard and worker counts, and usage.",
        "operationId": "workflows_distributed_runs_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedRun"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a distributed run: its state, shard and worker counts, and usage.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "workflows.distributed_runs.get",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/distributed_jobs/{distributed_job}/distributed_runs/{distributed_run}:addShards": {
      "post": {
        "description": "Appends shards to a run started with an open manifest; `close` ends the\nmanifest, and the run ends once those shards are done.",
        "operationId": "workflows_distributed_runs_add_shards",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "close": {
                    "description": "Close the manifest: the run ends once its shards are done.",
                    "type": "boolean"
                  },
                  "shards": {
                    "description": "The shards to append.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.workflows.v1.ShardInput"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedRun"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Appends shards to a run started with an open manifest; `close` ends the manifest, and the run ends once those shards are done.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "workflows.distributed_runs.add_shards",
        "x-sylphx-permission": "workflows:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/distributed_jobs/{distributed_job}/distributed_runs/{distributed_run}:cancel": {
      "post": {
        "description": "Cancels a distributed run: workers get SIGTERM and 30s, then leases are\nreleased; finished shards are kept. A closed run fails with INVALID_STATE.",
        "operationId": "workflows_distributed_runs_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "reason": {
                    "description": "Why the run is cancelled.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.DistributedRun"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Cancels a distributed run: workers get SIGTERM and 30s, then leases are released; finished shards are kept. A closed run fails with INVALID_STATE.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "workflows.distributed_runs.cancel",
        "x-sylphx-permission": "workflows:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/distributed_jobs/{distributed_job}/distributed_runs/{distributed_run}:readShards": {
      "get": {
        "description": "Reads a page of the run's shards, in queue order.",
        "operationId": "workflows_distributed_runs_read_shards",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 100, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only shards in this state; unset reads every shard.",
            "in": "query",
            "name": "state_filter",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/sylphx.workflows.v1.ShardState"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.ReadDistributedRunShardsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Reads a page of the run's shards, in queue order.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "workflows.distributed_runs.read_shards",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/distributed_jobs/{distributed_job}/distributed_runs/{distributed_run}:readWorkers": {
      "get": {
        "description": "Reads a page of the run's workers.",
        "operationId": "workflows_distributed_runs_read_workers",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "distributed_run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 100, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.ReadDistributedRunWorkersResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Reads a page of the run's workers.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "workflows.distributed_runs.read_workers",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users": {
      "get": {
        "description": "Lists end users.",
        "operationId": "auth_end_users_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.ListEndUsersResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists end users.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "auth.end_users.list",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates an end user.",
        "operationId": "auth_end_users_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The end user id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "end_user_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.auth.v1.EndUser"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.EndUser"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an end user.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "auth.end_users.create",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}": {
      "delete": {
        "description": "Deletes an end user.",
        "operationId": "auth_end_users_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the end user does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete the end user's memberships; sessions are always revoked.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an end user.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.end_users.delete",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets an end user.",
        "operationId": "auth_end_users_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.EndUser"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an end user.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "auth.end_users.get",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates an end user.",
        "operationId": "auth_end_users_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.auth.v1.EndUser"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.EndUser"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates an end user.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.end_users.update",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}/identities": {
      "get": {
        "description": "Lists the identities an end user signs in with.",
        "operationId": "auth_identities_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.ListIdentitiesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists the identities an end user signs in with.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "auth.identities.list",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}/identities/{identity}": {
      "get": {
        "description": "Gets an identity of an end user.",
        "operationId": "auth_identities_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identity",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.Identity"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an identity of an end user.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "auth.identities.get",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}/identities/{identity}:move": {
      "post": {
        "description": "Moves a federated or device identity from one end user to another, to\nfix a wrongly linked player. One transaction: the identity changes owner,\nthe sessions of both end users are revoked, and nothing else about\neither moves (profile, memberships, data). Refused when it would leave\nthe source with no sign-in, unless the source is suspended, and when the\ntarget already has an identity of the same provider. The reason is\naudited with the operator, both end users and the identity's fingerprint.\nAn operator action: an end user's own session cannot call it.",
        "operationId": "auth_identities_move",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "identity",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "reason": {
                    "description": "Why the identity moves (1 to 512 characters); recorded in the audit trail.",
                    "type": "string"
                  },
                  "target_end_user": {
                    "description": "The end user that receives the identity.",
                    "type": "string",
                    "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
                  }
                },
                "required": [
                  "target_end_user",
                  "reason"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.Identity"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Moves a federated or device identity from one end user to another, to fix a wrongly linked player. One transaction: the identity changes owner, the sessions of both end users are revoked, and nothing else about either moves (profile, memberships, data). Refused when it would leave the source with no sign-in, unless the source is suspended, and when the target already has an identity of the same provider. The reason is audited with the operator, both end users and the identity's fingerprint. An operator action: an end user's own session cannot call it.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.identities.move",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}/sessions": {
      "get": {
        "description": "Lists sessions.",
        "operationId": "auth_sessions_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.ListSessionsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists sessions.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "auth.sessions.list",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}/sessions/{session}": {
      "get": {
        "description": "Gets a session.",
        "operationId": "auth_sessions_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.Session"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a session.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "auth.sessions.get",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}/sessions/{session}:revoke": {
      "post": {
        "description": "Revokes a session.",
        "operationId": "auth_sessions_revoke",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.Session"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Revokes a session.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.sessions.revoke",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}:attachExternalId": {
      "post": {
        "description": "Sets the customer's own id for an end user, once: an unset namespace is\nwritten, a set one is never rewritten, and a different value for a set\nnamespace is refused. A namespace holds one id for the life of the user.\nErasure removes the ids and remembers their hashes, so a value that\nbelonged to an erased user is never handed to another one.",
        "operationId": "auth_end_users_attach_external_id",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "external_id": {
                    "description": "The id itself, 1 to 128 printable characters, unique in its namespace\nacross the environment's live users.",
                    "type": "string"
                  },
                  "namespace": {
                    "description": "The customer's namespace for this id: `^[a-z][a-z0-9_]{0,31}$`.",
                    "type": "string"
                  }
                },
                "required": [
                  "namespace",
                  "external_id"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.EndUser"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Sets the customer's own id for an end user, once: an unset namespace is written, a set one is never rewritten, and a different value for a set namespace is refused. A namespace holds one id for the life of the user. Erasure removes the ids and remembers their hashes, so a value that belonged to an erased user is never handed to another one.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.end_users.attach_external_id",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}:reactivate": {
      "post": {
        "description": "Reactivates a suspended end user.",
        "operationId": "auth_end_users_reactivate",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.EndUser"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Reactivates a suspended end user.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "auth.end_users.reactivate",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}:revokeSessions": {
      "post": {
        "description": "Revokes every session of an end user.",
        "operationId": "auth_end_users_revoke_sessions",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.RevokeEndUserSessionsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Revokes every session of an end user.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.end_users.revoke_sessions",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}:suspend": {
      "post": {
        "description": "Suspends an end user: sessions are revoked and sign-in is refused.",
        "operationId": "auth_end_users_suspend",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "reason": {
                    "description": "Why; shown to administrators only.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.EndUser"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Suspends an end user: sessions are revoked and sign-in is refused.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "auth.end_users.suspend",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}:unlock": {
      "post": {
        "description": "Clears an end user's sign-in lock (repeated failed sign-ins) now.",
        "operationId": "auth_end_users_unlock",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "end_user",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.EndUser"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Clears an end user's sign-in lock (repeated failed sign-ins) now.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.end_users.unlock",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/end_users:find": {
      "get": {
        "description": "Finds the one end user of one of the customer's own ids. An id that\nbelongs to no live user of this environment is `RESOURCE_NOT_FOUND`,\nthe same answer a value erased with its user gives.",
        "operationId": "auth_end_users_find",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The customer's namespace of the id.",
            "in": "query",
            "name": "namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id to find.",
            "in": "query",
            "name": "external_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.FindEndUserResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Finds the one end user of one of the customer's own ids. An id that belongs to no live user of this environment is `RESOURCE_NOT_FOUND`, the same answer a value erased with its user gives.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "auth.end_users.find",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/entities": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists the entities the caller may see. The filter is limited to\n`entity_type` and `lifecycle`.",
        "operationId": "knowledge_entities_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, limited to `entity_type` and `lifecycle`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.ListEntitiesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists the entities the caller may see. The filter is limited to `entity_type` and `lifecycle`.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "knowledge.entities.list",
        "x-sylphx-permission": "knowledge:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates an entity in a space. An entity whose external id already\nnames one in the graph is refused with `RESOURCE_ALREADY_EXISTS`, which\nnames it; use Update with `allow_missing` to upsert.",
        "operationId": "knowledge_entities_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The entity id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "entity_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an entity in a space. An entity whose external id already names one in the graph is refused with `RESOURCE_ALREADY_EXISTS`, which names it; use Update with `allow_missing` to upsert.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.entities.create",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/entities/{entity}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes an entity and every fact about it. With `force` it is a\ndata-rights erasure: the episodes the person wrote are deleted too, with\ntheir search and embedding entries.",
        "operationId": "knowledge_entities_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the entity does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete the episodes this person wrote (a data-rights erasure).",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an entity and every fact about it. With `force` it is a data-rights erasure: the episodes the person wrote are deleted too, with their search and embedding entries.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.entities.delete",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets an entity.",
        "operationId": "knowledge_entities_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an entity.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "knowledge.entities.get",
        "x-sylphx-permission": "knowledge:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates an entity. With `allow_missing` it is the structured upsert\n(`upsert_entity`): an entity matched by `external_ids` is updated,\notherwise one is created.",
        "operationId": "knowledge_entities_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the entity when no entity matches (`upsert_entity`): the name, or\nelse `external_ids`, identifies it.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates an entity. With `allow_missing` it is the structured upsert (`upsert_entity`): an entity matched by `external_ids` is updated, otherwise one is created.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.entities.update",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/entities/{entity}:merge": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nMerges other entities into this one: their facts and external ids\nresolve to it. The merge is recorded and reversible with `:split`; it is\nnever a silent rewrite.",
        "operationId": "knowledge_entities_merge",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "entities": {
                    "description": "The entities to merge into it; 1 to 20.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array",
                    "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
                  },
                  "reason": {
                    "description": "Why they are the same, recorded with the merge; at most 1000\ncharacters.",
                    "type": "string"
                  }
                },
                "required": [
                  "entities"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.Entity"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Merges other entities into this one: their facts and external ids resolve to it. The merge is recorded and reversible with `:split`; it is never a silent rewrite.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.entities.merge",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/entities/{entity}:profile": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nReturns one entity's profile in one call (`entity`): the entity, its\ncurrent facts in both directions, the entities they name and the recent\nepisodes about it, trimmed to what the caller may see. A read with a\nrequest body.",
        "operationId": "knowledge_entities_profile",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "max_episodes": {
                    "description": "At most this many recent episodes; default 20, clamped to 100.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "valid_time": {
                    "description": "The profile as it was valid at this time; default now.",
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.ProfileEntityResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Returns one entity's profile in one call (`entity`): the entity, its current facts in both directions, the entities they name and the recent episodes about it, trimmed to what the caller may see. A read with a request body.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "knowledge.entities.profile",
        "x-sylphx-permission": "knowledge:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/entities/{entity}:split": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nSplits a merged entity back out of this one, with the facts and\nexternal ids it brought.",
        "operationId": "knowledge_entities_split",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "entity": {
                    "description": "The merged entity to restore.",
                    "type": "string",
                    "x-sylphx-resource-reference": "knowledge.sylphx.com/Entity"
                  }
                },
                "required": [
                  "entity"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.SplitEntityResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Splits a merged entity back out of this one, with the facts and external ids it brought.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.entities.split",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/entities:ask": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nAnswers a question through Sylphx AI (`ask`), from a context pack built\nonly from records the caller may see, with citations to its episodes.",
        "operationId": "knowledge_entities_ask",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "question": {
                    "description": "The question, in natural language; 1 to 4000 characters.",
                    "type": "string"
                  },
                  "spaces": {
                    "description": "The spaces to answer from, as resource names; default every space the\ncaller may read. At most 50.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array",
                    "x-sylphx-resource-reference": "knowledge.sylphx.com/Space"
                  },
                  "valid_time": {
                    "description": "Answer about the graph as it was valid at this time; default now.",
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "question"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.AskEntitiesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Answers a question through Sylphx AI (`ask`), from a context pack built only from records the caller may see, with citations to its episodes.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RATE_LIMITED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-method": "knowledge.entities.ask",
        "x-sylphx-permission": "knowledge:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/entities:recall": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nSearches the graph (`recall`): hybrid lexical and semantic search over\nepisodes and facts, fused by reciprocal rank, then at most two hops of\nexpansion from the top entities. Returns a context pack with citations,\nbuilt only from records the caller may see.",
        "operationId": "knowledge_entities_recall",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "entity_types": {
                    "description": "Only entities of these types; default every type.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "max_facts": {
                    "description": "At most this many facts in the pack; default 30, clamped to 200.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "max_hops": {
                    "description": "How many hops to expand from the top entities, 0 to 2; default 2.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "query": {
                    "description": "What to recall, in natural language; 1 to 4000 characters.",
                    "type": "string"
                  },
                  "spaces": {
                    "description": "The spaces to search, as resource names; default every space the caller\nmay read. At most 50.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array",
                    "x-sylphx-resource-reference": "knowledge.sylphx.com/Space"
                  },
                  "valid_time": {
                    "description": "Recall the graph as it was valid at this time; default now.",
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.RecallEntitiesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Searches the graph (`recall`): hybrid lexical and semantic search over episodes and facts, fused by reciprocal rank, then at most two hops of expansion from the top entities. Returns a context pack with citations, built only from records the caller may see.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RATE_LIMITED"
        ],
        "x-sylphx-method": "knowledge.entities.recall",
        "x-sylphx-permission": "knowledge:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/entitlement_grants": {
      "get": {
        "description": "Lists entitlement grants.",
        "operationId": "money_entitlement_grants_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over filterable fields, for example `feature = \"plus\"`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListEntitlementGrantsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists entitlement grants.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.entitlement_grants.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a manual entitlement grant (support, comp, grace). Append-only;\nneeds the approval-class scope. The approver recorded is the key's principal.",
        "operationId": "money_entitlement_grants_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The grant's id, also its idempotency: `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`.\nThe same id with the same grant returns the stored one; the same id with\nanother grant is RESOURCE_ALREADY_EXISTS.",
            "in": "query",
            "name": "entitlement_grant_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.EntitlementGrant"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.EntitlementGrant"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a manual entitlement grant (support, comp, grace). Append-only; needs the approval-class scope. The approver recorded is the key's principal.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "UNKNOWN_FIELD",
          "RESOURCE_ALREADY_EXISTS"
        ],
        "x-sylphx-method": "money.entitlement_grants.create",
        "x-sylphx-permission": "billing:credits.approve",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/entitlement_grants/{entitlement_grant}": {
      "get": {
        "description": "Gets an entitlement grant.",
        "operationId": "money_entitlement_grants_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "entitlement_grant",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.EntitlementGrant"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an entitlement grant.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.entitlement_grants.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/entitlement_grants:check": {
      "post": {
        "description": "Answers whether a subject holds a feature now, and how much of it.",
        "operationId": "money_entitlement_grants_check",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "feature": {
                    "description": "The feature key.",
                    "type": "string"
                  },
                  "subject": {
                    "$ref": "#/components/schemas/sylphx.money.v1.Subject",
                    "description": "Who."
                  }
                },
                "required": [
                  "subject",
                  "feature"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.CheckEntitlementResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Answers whether a subject holds a feature now, and how much of it.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "money.entitlement_grants.check",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/error_groups": {
      "get": {
        "description": "Lists error groups; filter by `state`, `service_name`, and\n`last_seen_time`.",
        "operationId": "observability_error_groups_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.ListErrorGroupsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists error groups; filter by `state`, `service_name`, and `last_seen_time`.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "observability.error_groups.list",
        "x-sylphx-permission": "observability:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/error_groups/{error_group}": {
      "get": {
        "description": "Gets an error group.",
        "operationId": "observability_error_groups_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "error_group",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.ErrorGroup"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an error group.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "observability.error_groups.get",
        "x-sylphx-permission": "observability:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/error_groups/{error_group}/error_events": {
      "get": {
        "description": "Lists error events.",
        "operationId": "observability_error_events_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "error_group",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.ListErrorEventsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists error events.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "observability.error_events.list",
        "x-sylphx-permission": "observability:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/error_groups/{error_group}/error_events/{error_event}": {
      "get": {
        "description": "Gets an error event.",
        "operationId": "observability_error_events_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "error_group",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "error_event",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.ErrorEvent"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an error event.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "observability.error_events.get",
        "x-sylphx-permission": "observability:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/error_groups/{error_group}:acknowledge": {
      "post": {
        "description": "Acknowledges an error group.",
        "operationId": "observability_error_groups_acknowledge",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "error_group",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.ErrorGroup"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Acknowledges an error group.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "observability.error_groups.acknowledge",
        "x-sylphx-permission": "observability:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/error_groups/{error_group}:reopen": {
      "post": {
        "description": "Reopens a resolved or acknowledged error group.",
        "operationId": "observability_error_groups_reopen",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "error_group",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.ErrorGroup"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Reopens a resolved or acknowledged error group.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "observability.error_groups.reopen",
        "x-sylphx-permission": "observability:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/error_groups/{error_group}:resolve": {
      "post": {
        "description": "Resolves an error group; a new occurrence reopens it.",
        "operationId": "observability_error_groups_resolve",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "error_group",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.ErrorGroup"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Resolves an error group; a new occurrence reopens it.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "observability.error_groups.resolve",
        "x-sylphx-permission": "observability:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/error_groups:capture": {
      "post": {
        "description": "Captures one error occurrence. It is grouped by `fingerprint` when the\ncaller sets one, else by exception type and the symbolicated in-app\nstack; release is never part of the group. A new occurrence reopens a\nresolved group. Secrets and personal data are scrubbed by the\nenvironment's Scrubbing Policy before storage. A fingerprint-equal replay\nbills no second new-error unit. Under quota pressure the response says\nwhat to sample. Browsers call it with a publishable key that holds\n`observability:ingest` (CORS allowed, rate-limited per environment).",
        "operationId": "observability_error_groups_capture",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "error_event": {
                    "$ref": "#/components/schemas/sylphx.observability.v1.ErrorEvent",
                    "description": "The occurrence; only record fields are read."
                  }
                },
                "required": [
                  "error_event"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.CaptureErrorResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Captures one error occurrence. It is grouped by `fingerprint` when the caller sets one, else by exception type and the symbolicated in-app stack; release is never part of the group. A new occurrence reopens a resolved group. Secrets and personal data are scrubbed by the environment's Scrubbing Policy before storage. A fingerprint-equal replay bills no second new-error unit. Under quota pressure the response says what to sample. Browsers call it with a publishable key that holds `observability:ingest` (CORS allowed, rate-limited per environment).",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "RATE_LIMITED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-method": "observability.error_groups.capture",
        "x-sylphx-permission": "observability:ingest",
        "x-sylphx-publishable-ok": true,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/events": {
      "get": {
        "description": "Lists events.",
        "operationId": "events_events_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.ListEventsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists events.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "events.events.list",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/events/{event}": {
      "get": {
        "description": "Gets an event.",
        "operationId": "events_events_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "event",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.Event"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an event.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "events.events.get",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/generations": {
      "get": {
        "description": "Lists the environment's Sylphx AI calls, newest first, within the trace\nretention; filter by `request_model`, `outcome`, `api_key`, `start_time`,\n`tags.<key>` and the other filterable fields.",
        "operationId": "observability_generations_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields and `tags.<key>`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields; default `start_time desc`.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.ListGenerationsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists the environment's Sylphx AI calls, newest first, within the trace retention; filter by `request_model`, `outcome`, `api_key`, `start_time`, `tags.<key>` and the other filterable fields.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "observability.generations.list",
        "x-sylphx-permission": "observability:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/generations/{generation}": {
      "get": {
        "description": "Gets a generation: one Sylphx AI call.",
        "operationId": "observability_generations_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "generation",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.Generation"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a generation: one Sylphx AI call.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "observability.generations.get",
        "x-sylphx-permission": "observability:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/glossaries": {
      "get": {
        "description": "Lists glossarys.",
        "operationId": "localization_glossaries_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.ListGlossariesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists glossarys.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "localization.glossaries.list",
        "x-sylphx-permission": "localization:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a glossary.",
        "operationId": "localization_glossaries_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The glossary id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "glossary_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.localization.v1.Glossary"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.Glossary"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a glossary.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "localization.glossaries.create",
        "x-sylphx-permission": "localization:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/glossaries/{glossary}": {
      "delete": {
        "description": "Deletes a glossary.",
        "operationId": "localization_glossaries_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "glossary",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the glossary does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a glossary.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "localization.glossaries.delete",
        "x-sylphx-permission": "localization:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a glossary.",
        "operationId": "localization_glossaries_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "glossary",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.Glossary"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a glossary.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "localization.glossaries.get",
        "x-sylphx-permission": "localization:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a glossary.",
        "operationId": "localization_glossaries_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "glossary",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the glossary when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.localization.v1.Glossary"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.localization.v1.Glossary"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a glossary.",
        "tags": [
          "localization"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "localization.glossaries.update",
        "x-sylphx-permission": "localization:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/inbound_endpoints": {
      "get": {
        "description": "Lists inbound endpoints.",
        "operationId": "events_inbound_endpoints_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.ListInboundEndpointsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists inbound endpoints.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "events.inbound_endpoints.list",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates an inbound endpoint.",
        "operationId": "events_inbound_endpoints_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The inbound endpoint id, the final name segment; the server assigns one\nwhen empty.",
            "in": "query",
            "name": "inbound_endpoint_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.events.v1.InboundEndpoint"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.InboundEndpoint"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an inbound endpoint.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "events.inbound_endpoints.create",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/inbound_endpoints/{inbound_endpoint}": {
      "delete": {
        "description": "Deletes an inbound endpoint.",
        "operationId": "events_inbound_endpoints_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "inbound_endpoint",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the inbound endpoint does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an inbound endpoint.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.inbound_endpoints.delete",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets an inbound endpoint.",
        "operationId": "events_inbound_endpoints_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "inbound_endpoint",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.InboundEndpoint"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an inbound endpoint.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "events.inbound_endpoints.get",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates an inbound endpoint.",
        "operationId": "events_inbound_endpoints_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "inbound_endpoint",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the inbound endpoint when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.events.v1.InboundEndpoint"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.InboundEndpoint"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates an inbound endpoint.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.inbound_endpoints.update",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/jobs": {
      "get": {
        "description": "Lists jobs.",
        "operationId": "workflows_jobs_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.ListJobsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists jobs.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "workflows.jobs.list",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a job.",
        "operationId": "workflows_jobs_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The job id, the final name segment: `[a-z0-9-]{1,63}`.",
            "in": "query",
            "name": "job_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.workflows.v1.Job"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a job.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.workflows.v1.Job"
        },
        "x-sylphx-method": "workflows.jobs.create",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/jobs/{job}": {
      "delete": {
        "description": "Deletes a job.",
        "operationId": "workflows_jobs_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the job does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also cancel active runs and delete Schedules targeting the job; without\nit a job with an active run or a Schedule fails with INVALID_STATE.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a job.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "workflows.jobs.delete",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a job.",
        "operationId": "workflows_jobs_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.Job"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a job.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "workflows.jobs.get",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a job. Runs already started keep the generation they pinned.",
        "operationId": "workflows_jobs_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the job when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.workflows.v1.Job"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a job. Runs already started keep the generation they pinned.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.workflows.v1.Job"
        },
        "x-sylphx-method": "workflows.jobs.update",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/jobs/{job}/job_runs": {
      "get": {
        "description": "Lists a job's runs, newest first.",
        "operationId": "workflows_job_runs_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.ListJobRunsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a job's runs, newest first.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "workflows.job_runs.list",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Starts a run of a Job now. The same `Idempotency-Key` returns the same\nrun for 24h; a Schedule fire uses `{job}:{intended time}`. With\nconcurrency `forbid`, a start while a run is active fails with\nINVALID_STATE.",
        "operationId": "workflows_job_runs_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The run id, the final name segment; the server assigns one when empty.",
            "in": "query",
            "name": "job_run_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without starting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.workflows.v1.JobRun"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.JobRun"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Starts a run of a Job now. The same `Idempotency-Key` returns the same run for 24h; a Schedule fire uses `{job}:{intended time}`. With concurrency `forbid`, a start while a run is active fails with INVALID_STATE.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "workflows.job_runs.create",
        "x-sylphx-permission": "workflows:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/jobs/{job}/job_runs/{job_run}": {
      "get": {
        "description": "Gets a job run.",
        "operationId": "workflows_job_runs_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "job_run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.JobRun"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a job run.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "workflows.job_runs.get",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/jobs/{job}/job_runs/{job_run}:cancel": {
      "post": {
        "description": "Cancels a job run: SIGTERM, then SIGKILL after 30s. A closed run fails\nwith INVALID_STATE.",
        "operationId": "workflows_job_runs_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "job_run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "reason": {
                    "description": "Why the run is cancelled.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.JobRun"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Cancels a job run: SIGTERM, then SIGKILL after 30s. A closed run fails with INVALID_STATE.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "workflows.job_runs.cancel",
        "x-sylphx-permission": "workflows:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/jobs/{job}/job_runs/{job_run}:readLogs": {
      "get": {
        "description": "Reads a page of a job run's log lines, oldest first. With `wait`, an\nempty page on a running run waits up to that long for new lines, so a\nclient follows the log by passing each `next_page_token` back.",
        "operationId": "workflows_job_runs_read_logs",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "job_run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many lines; default 500, clamped to 5000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "On a running run, wait up to this long (at most 30s) for new lines\nbefore returning an empty page.",
            "in": "query",
            "name": "wait",
            "required": false,
            "schema": {
              "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.ReadJobRunLogsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Reads a page of a job run's log lines, oldest first. With `wait`, an empty page on a running run waits up to that long for new lines, so a client follows the log by passing each `next_page_token` back.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "workflows.job_runs.read_logs",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/keys": {
      "get": {
        "description": "Lists keys in an environment.",
        "operationId": "keys_keys_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.keys.v1.ListKeysResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists keys in an environment.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "keys.keys.list",
        "x-sylphx-permission": "keys:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a key; the signer generates its first version.",
        "operationId": "keys_keys_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the new key, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "in": "query",
            "name": "key_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.keys.v1.Key"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a key; the signer generates its first version.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.keys.v1.Key"
        },
        "x-sylphx-method": "keys.keys.create",
        "x-sylphx-permission": "keys:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/keys/{key}": {
      "delete": {
        "description": "Deletes a key and schedules every version's destruction.",
        "operationId": "keys_keys_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete every child Resource; without it a parent with children\nfails with FAILED_PRECONDITION.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a key and schedules every version's destruction.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "DELETION_PROTECTED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "keys.keys.delete",
        "x-sylphx-permission": "keys:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a key.",
        "operationId": "keys_keys_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.keys.v1.Key"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a key.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "keys.keys.get",
        "x-sylphx-permission": "keys:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a key's rotation period, deletion protection, or metadata.",
        "operationId": "keys_keys_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.keys.v1.Key"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a key's rotation period, deletion protection, or metadata.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.keys.v1.Key"
        },
        "x-sylphx-method": "keys.keys.update",
        "x-sylphx-permission": "keys:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/keys/{key}/key_versions": {
      "get": {
        "description": "Lists a key's versions.",
        "operationId": "keys_key_versions_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.keys.v1.ListKeyVersionsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a key's versions.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "keys.key_versions.list",
        "x-sylphx-permission": "keys:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/keys/{key}/key_versions/{key_version}": {
      "get": {
        "description": "Gets a key version.",
        "operationId": "keys_key_versions_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key_version",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.keys.v1.KeyVersion"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a key version.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "keys.key_versions.get",
        "x-sylphx-permission": "keys:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/keys/{key}/key_versions/{key_version}:destroy": {
      "post": {
        "description": "Schedules a key version's destruction after a 24-hour grace; the\nprimary version cannot be destroyed.",
        "operationId": "keys_key_versions_destroy",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key_version",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Destroy only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without destroying.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.keys.v1.KeyVersion"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Schedules a key version's destruction after a 24-hour grace; the primary version cannot be destroyed.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "keys.key_versions.destroy",
        "x-sylphx-permission": "keys:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/keys/{key}:decrypt": {
      "post": {
        "description": "Decrypts a ciphertext made by Encrypt with this key.",
        "operationId": "keys_keys_decrypt",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "additional_authenticated_data": {
                    "contentEncoding": "base64",
                    "description": "The additional authenticated data given to Encrypt.",
                    "type": "string"
                  },
                  "ciphertext": {
                    "contentEncoding": "base64",
                    "description": "The ciphertext from Encrypt.",
                    "type": "string"
                  }
                },
                "required": [
                  "ciphertext"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.keys.v1.DecryptResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Decrypts a ciphertext made by Encrypt with this key.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RATE_LIMITED"
        ],
        "x-sylphx-method": "keys.keys.decrypt",
        "x-sylphx-permission": "keys:decrypt",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/keys/{key}:encrypt": {
      "post": {
        "description": "Encrypts data with an ENCRYPT key.",
        "operationId": "keys_keys_encrypt",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "additional_authenticated_data": {
                    "contentEncoding": "base64",
                    "description": "Data bound to the ciphertext and required again to decrypt it.",
                    "type": "string"
                  },
                  "plaintext": {
                    "contentEncoding": "base64",
                    "description": "The plaintext, at most 64 KiB.",
                    "type": "string",
                    "x-sylphx-sensitive": true
                  }
                },
                "required": [
                  "plaintext"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.keys.v1.EncryptResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Encrypts data with an ENCRYPT key.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RATE_LIMITED"
        ],
        "x-sylphx-method": "keys.keys.encrypt",
        "x-sylphx-permission": "keys:encrypt",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/keys/{key}:macSign": {
      "post": {
        "description": "Computes a MAC of data with a MAC key.",
        "operationId": "keys_keys_mac_sign",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "data": {
                    "contentEncoding": "base64",
                    "description": "The message, at most 64 KiB.",
                    "type": "string"
                  },
                  "key_version": {
                    "description": "The version to use; default the primary version.",
                    "type": "string",
                    "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
                  }
                },
                "required": [
                  "data"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.keys.v1.MacSignResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Computes a MAC of data with a MAC key.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RATE_LIMITED"
        ],
        "x-sylphx-method": "keys.keys.mac_sign",
        "x-sylphx-permission": "keys:sign",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/keys/{key}:macVerify": {
      "post": {
        "description": "Verifies a MAC made by a MAC key, in constant time.",
        "operationId": "keys_keys_mac_verify",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "data": {
                    "contentEncoding": "base64",
                    "description": "The message.",
                    "type": "string"
                  },
                  "key_version": {
                    "description": "The version to use; default the primary version.",
                    "type": "string",
                    "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
                  },
                  "mac": {
                    "contentEncoding": "base64",
                    "description": "The MAC to check.",
                    "type": "string"
                  }
                },
                "required": [
                  "data",
                  "mac"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.keys.v1.MacVerifyResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Verifies a MAC made by a MAC key, in constant time.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RATE_LIMITED"
        ],
        "x-sylphx-method": "keys.keys.mac_verify",
        "x-sylphx-permission": "keys:verify",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/keys/{key}:rotate": {
      "post": {
        "description": "Rotates a key: adds a version and makes it primary. Older versions keep\nverifying and decrypting until destroyed.",
        "operationId": "keys_keys_rotate",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Rotate only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without rotating.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Rotates a key: adds a version and makes it primary. Older versions keep verifying and decrypting until destroyed.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.keys.v1.Key"
        },
        "x-sylphx-method": "keys.keys.rotate",
        "x-sylphx-permission": "keys:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/keys/{key}:sign": {
      "post": {
        "description": "Signs data or a digest with a SIGN key. Every use is audited.",
        "operationId": "keys_keys_sign",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "data": {
                    "contentEncoding": "base64",
                    "description": "The message to sign, at most 64 KiB. Set exactly one of `data` and\n`digest`.",
                    "type": "string"
                  },
                  "digest": {
                    "contentEncoding": "base64",
                    "description": "The digest of the message under the algorithm's hash.",
                    "type": "string"
                  },
                  "key_version": {
                    "description": "The version to use; default the primary version.",
                    "type": "string",
                    "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.keys.v1.SignResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Signs data or a digest with a SIGN key. Every use is audited.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RATE_LIMITED"
        ],
        "x-sylphx-method": "keys.keys.sign",
        "x-sylphx-permission": "keys:sign",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/keys/{key}:verify": {
      "post": {
        "description": "Verifies a signature made by a SIGN key.",
        "operationId": "keys_keys_verify",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "data": {
                    "contentEncoding": "base64",
                    "description": "The signed message. Set exactly one of `data` and `digest`.",
                    "type": "string"
                  },
                  "digest": {
                    "contentEncoding": "base64",
                    "description": "The digest of the signed message.",
                    "type": "string"
                  },
                  "key_version": {
                    "description": "The version to use; default the primary version; the signature names none.",
                    "type": "string",
                    "x-sylphx-resource-reference": "keys.sylphx.com/KeyVersion"
                  },
                  "signature": {
                    "contentEncoding": "base64",
                    "description": "The signature to check.",
                    "type": "string"
                  }
                },
                "required": [
                  "signature"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.keys.v1.VerifyResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Verifies a signature made by a SIGN key.",
        "tags": [
          "keys"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RATE_LIMITED"
        ],
        "x-sylphx-method": "keys.keys.verify",
        "x-sylphx-permission": "keys:verify",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/knowledge_schemas": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists knowledge schemas.",
        "operationId": "knowledge_knowledge_schemas_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.ListKnowledgeSchemasResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists knowledge schemas.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "knowledge.knowledge_schemas.list",
        "x-sylphx-permission": "knowledge:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a knowledge schema.",
        "operationId": "knowledge_knowledge_schemas_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The knowledge schema id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "knowledge_schema_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.knowledge.v1.KnowledgeSchema"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.KnowledgeSchema"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a knowledge schema.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "knowledge.knowledge_schemas.create",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/knowledge_schemas/{knowledge_schema}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a knowledge schema. A schema a space still accepts is refused\nwith `RESOURCE_IN_USE`.",
        "operationId": "knowledge_knowledge_schemas_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "knowledge_schema",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the knowledge schema does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a knowledge schema. A schema a space still accepts is refused with `RESOURCE_IN_USE`.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "RESOURCE_IN_USE",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.knowledge_schemas.delete",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a knowledge schema.",
        "operationId": "knowledge_knowledge_schemas_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "knowledge_schema",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.KnowledgeSchema"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a knowledge schema.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "knowledge.knowledge_schemas.get",
        "x-sylphx-permission": "knowledge:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates a knowledge schema. An accepted update publishes a new\nrevision; a change that would invalidate existing records is refused\nwith `INVALID_FIELD`.",
        "operationId": "knowledge_knowledge_schemas_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "knowledge_schema",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the knowledge schema when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.knowledge.v1.KnowledgeSchema"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.KnowledgeSchema"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a knowledge schema. An accepted update publishes a new revision; a change that would invalidate existing records is refused with `INVALID_FIELD`.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.knowledge_schemas.update",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/kv_namespaces": {
      "get": {
        "description": "Lists kv namespaces in a environment.",
        "operationId": "data_kv_namespaces_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ListKvNamespacesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists kv namespaces in a environment.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "data.kv_namespaces.list",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a kv namespace. The Operation is done when the controller settles\nit.",
        "operationId": "data_kv_namespaces_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "kv_namespace_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.data.v1.KvNamespace"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a kv namespace. The Operation is done when the controller settles it.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.data.v1.KvNamespace"
        },
        "x-sylphx-method": "data.kv_namespaces.create",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/kv_namespaces/{kv_namespace}": {
      "delete": {
        "description": "Deletes a kv namespace. Fails while `spec.deletion_protection` is set.",
        "operationId": "data_kv_namespaces_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "kv_namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a kv namespace. Fails while `spec.deletion_protection` is set.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "DELETION_PROTECTED",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "data.kv_namespaces.delete",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a kv namespace.",
        "operationId": "data_kv_namespaces_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "kv_namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.KvNamespace"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a kv namespace.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.kv_namespaces.get",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a kv namespace.",
        "operationId": "data_kv_namespaces_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "kv_namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.data.v1.KvNamespace"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a kv namespace.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.data.v1.KvNamespace"
        },
        "x-sylphx-method": "data.kv_namespaces.update",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/kv_namespaces/{kv_namespace}:connect": {
      "post": {
        "description": "Returns how to connect to the KV namespace: its endpoint and its own\nengine credentials. The credentials are not API keys and are returned only\nhere.",
        "operationId": "data_kv_namespaces_connect",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "kv_namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ConnectKvNamespaceResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Returns how to connect to the KV namespace: its endpoint and its own engine credentials. The credentials are not API keys and are returned only here.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE"
        ],
        "x-sylphx-method": "data.kv_namespaces.connect",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/kv_namespaces/{kv_namespace}:rotateCredentials": {
      "post": {
        "description": "Replaces the KV namespace's engine credentials; the old ones stop working\nonce the new ones are served.",
        "operationId": "data_kv_namespaces_rotate_credentials",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "kv_namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without acting.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Replaces the KV namespace's engine credentials; the old ones stop working once the new ones are served.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.data.v1.KvNamespace"
        },
        "x-sylphx-method": "data.kv_namespaces.rotate_credentials",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases": {
      "get": {
        "description": "Lists leases in a environment. Filter on `meta.labels` (for example\n`labels.agent = \"a_123\"`), `status.state`, and `spec.kind`.",
        "operationId": "sandboxes_leases_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.ListLeasesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists leases in a environment. Filter on `meta.labels` (for example `labels.agent = \"a_123\"`), `status.state`, and `spec.kind`.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "sandboxes.leases.list",
        "x-sylphx-permission": "sandboxes:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a lease: granted now and returned READY (or GRANTED when\n`wait_ready` is false), or refused with a typed error. There is no queue.",
        "operationId": "sandboxes_leases_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "lease_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Return as soon as the machine is granted instead of when the guest is\nready. Default false: wait for READY, at most 60 seconds.",
            "in": "query",
            "name": "skip_wait_ready",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.sandboxes.v1.Lease"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Lease"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a lease: granted now and returned READY (or GRANTED when `wait_ready` is false), or refused with a typed error. There is no queue.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "RESOURCE_NOT_FOUND",
          "RESOURCE_IN_USE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "NO_CAPACITY",
          "SHAPE_NOT_OFFERED",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-method": "sandboxes.leases.create",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}": {
      "get": {
        "description": "Gets a lease.",
        "operationId": "sandboxes_leases_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Lease"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a lease.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "sandboxes.leases.get",
        "x-sylphx-permission": "sandboxes:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}/lease_events": {
      "get": {
        "description": "Lists a lease's events in order. With `wait`, blocks up to that long\nfor an event after `page_token` (long poll).",
        "operationId": "sandboxes_lease_events_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over `kind`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Block up to this long (at most 60 seconds) when there is no event after\n`page_token`.",
            "in": "query",
            "name": "wait",
            "required": false,
            "schema": {
              "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.ListLeaseEventsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a lease's events in order. With `wait`, blocks up to that long for an event after `page_token` (long poll).",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "sandboxes.lease_events.list",
        "x-sylphx-permission": "sandboxes:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}/lease_events/{lease_event}": {
      "get": {
        "description": "Gets one lease event.",
        "operationId": "sandboxes_lease_events_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease_event",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseEvent"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets one lease event.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "sandboxes.lease_events.get",
        "x-sylphx-permission": "sandboxes:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:acquireControl": {
      "post": {
        "description": "Takes exclusive input control of a lease's display. A HUMAN acquire\npreempts an AGENT holder and returns a controller stream; an AGENT acquire\nis refused CONTROL_HELD_BY_HUMAN while a human holds control. Control\nlapses at `ttl`, which the platform caps at 30 minutes.",
        "operationId": "sandboxes_leases_acquire_control",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "holder": {
                    "$ref": "#/components/schemas/sylphx.sandboxes.v1.ControlHolder",
                    "description": "HUMAN or AGENT."
                  },
                  "holder_label": {
                    "description": "A label for the holder, for example the person's user id; recorded in\nthe audit events.",
                    "type": "string"
                  },
                  "preempt": {
                    "description": "For HUMAN: take control from another human.",
                    "type": "boolean"
                  },
                  "ttl": {
                    "description": "How long; default 10 minutes, capped at 30 minutes.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  }
                },
                "required": [
                  "holder"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.AcquireLeaseControlResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Takes exclusive input control of a lease's display. A HUMAN acquire preempts an AGENT holder and returns a controller stream; an AGENT acquire is refused CONTROL_HELD_BY_HUMAN while a human holds control. Control lapses at `ttl`, which the platform caps at 30 minutes.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "CONTROL_HELD",
          "CONTROL_HELD_BY_HUMAN"
        ],
        "x-sylphx-method": "sandboxes.leases.acquire_control",
        "x-sylphx-permission": "sandboxes:exec",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:act": {
      "post": {
        "description": "Performs computer actions on a DESKTOP, BROWSER, or ANDROID lease, in\norder, and returns each action's result and, when `screenshot` is set,\nthe screenshot taken after the last action. The actions are the Anthropic\ncomputer tool's and OpenAI computer use's, one-to-one\n(docs/services/sandboxes/computer-use.md). Refused CONTROL_HELD_BY_HUMAN\nwhile a human holds control.",
        "operationId": "sandboxes_leases_act",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "actions": {
                    "description": "The actions, performed in order; at most 64. An empty list with\n`screenshot` set only takes a screenshot.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.sandboxes.v1.ComputerAction"
                    },
                    "type": "array"
                  },
                  "control_epoch": {
                    "description": "Act under this AGENT control epoch; 0 acts only while nobody holds\ncontrol.",
                    "format": "int64",
                    "type": "string"
                  },
                  "lease_generation": {
                    "description": "Refuse STALE_GENERATION unless the lease is at this generation; 0 skips\nthe check.",
                    "format": "int64",
                    "type": "string"
                  },
                  "screenshot": {
                    "$ref": "#/components/schemas/sylphx.sandboxes.v1.ScreenshotOptions",
                    "description": "Take a screenshot after the last action and return it."
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.ActLeaseResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Performs computer actions on a DESKTOP, BROWSER, or ANDROID lease, in order, and returns each action's result and, when `screenshot` is set, the screenshot taken after the last action. The actions are the Anthropic computer tool's and OpenAI computer use's, one-to-one (docs/services/sandboxes/computer-use.md). Refused CONTROL_HELD_BY_HUMAN while a human holds control.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "STALE_GENERATION",
          "CONTROL_HELD",
          "CONTROL_HELD_BY_HUMAN"
        ],
        "x-sylphx-method": "sandboxes.leases.act",
        "x-sylphx-permission": "sandboxes:exec",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:closePort": {
      "post": {
        "description": "Stops exposing a guest port.",
        "operationId": "sandboxes_leases_close_port",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "port": {
                    "description": "The guest port.",
                    "format": "int32",
                    "type": "integer"
                  }
                },
                "required": [
                  "port"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Lease"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "501": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Stops exposing a guest port.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "UNIMPLEMENTED"
        ],
        "x-sylphx-method": "sandboxes.leases.close_port",
        "x-sylphx-permission": "sandboxes:exec",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:exec": {
      "post": {
        "description": "Runs one command in the lease to completion and returns its output, capped\nat 1 MiB per stream. Long-running or interactive processes use the guest\nprotocol at `status.endpoints.guest_uri`.",
        "operationId": "sandboxes_leases_exec",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "command": {
                    "description": "The program and its arguments. Use `[\"bash\", \"-lc\", \"…\"]` for a shell.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "env": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Extra environment variables.",
                    "type": "object"
                  },
                  "stdin": {
                    "contentEncoding": "base64",
                    "description": "Bytes written to standard input.",
                    "type": "string"
                  },
                  "timeout": {
                    "description": "Kill the process after this long; default 60 seconds, at most 10\nminutes.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  },
                  "user": {
                    "description": "The guest user; default `user`. `root` is allowed: the whole machine\nbelongs to the lessee.",
                    "type": "string"
                  },
                  "working_directory": {
                    "description": "The working directory; default the user's home.",
                    "type": "string"
                  }
                },
                "required": [
                  "command"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.ExecLeaseResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Runs one command in the lease to completion and returns its output, capped at 1 MiB per stream. Long-running or interactive processes use the guest protocol at `status.endpoints.guest_uri`.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "STALE_GENERATION",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "sandboxes.leases.exec",
        "x-sylphx-permission": "sandboxes:exec",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:getControl": {
      "get": {
        "description": "Gets who holds control of a lease's display.",
        "operationId": "sandboxes_leases_get_control",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.ControlState"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets who holds control of a lease's display.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "sandboxes.leases.get_control",
        "x-sylphx-permission": "sandboxes:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:installApp": {
      "post": {
        "description": "Installs an Android app (APK) on an ANDROID lease.",
        "operationId": "sandboxes_leases_install_app",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "apk_path": {
                    "description": "The APK's path in the lease (write it with WriteLeaseFile first).",
                    "type": "string"
                  },
                  "grant_permissions": {
                    "description": "Grant every runtime permission the app declares.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "apk_path"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.InstallLeaseAppResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "501": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Installs an Android app (APK) on an ANDROID lease.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "NOT_FOUND",
          "UNIMPLEMENTED"
        ],
        "x-sylphx-method": "sandboxes.leases.install_app",
        "x-sylphx-permission": "sandboxes:exec",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:listFiles": {
      "post": {
        "description": "Lists one directory in the lease.",
        "operationId": "sandboxes_leases_list_files",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "depth": {
                    "description": "Descend this many levels; default 1.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "path": {
                    "description": "The absolute directory path in the guest.",
                    "type": "string"
                  }
                },
                "required": [
                  "path"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.ListLeaseFilesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists one directory in the lease.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "NOT_FOUND",
          "INVALID_STATE"
        ],
        "x-sylphx-method": "sandboxes.leases.list_files",
        "x-sylphx-permission": "sandboxes:exec",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:mintToken": {
      "post": {
        "description": "Mints a lease token for the data plane, bound to the current generation.\nHand it to a process that must not hold the Access key.",
        "operationId": "sandboxes_leases_mint_token",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "scopes": {
                    "description": "What the token admits.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.sandboxes.v1.TokenScope"
                    },
                    "type": "array"
                  },
                  "ttl": {
                    "description": "At most 1 hour and never past the lease's `expire_time`.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  }
                },
                "required": [
                  "scopes"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.MintLeaseTokenResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Mints a lease token for the data plane, bound to the current generation. Hand it to a process that must not hold the Access key.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "sandboxes.leases.mint_token",
        "x-sylphx-permission": "sandboxes:exec",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:openPort": {
      "post": {
        "description": "Exposes a guest port.",
        "operationId": "sandboxes_leases_open_port",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "port": {
                    "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeasePort",
                    "description": "The port to expose."
                  }
                },
                "required": [
                  "port"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Lease"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "501": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Exposes a guest port.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "UNIMPLEMENTED"
        ],
        "x-sylphx-method": "sandboxes.leases.open_port",
        "x-sylphx-permission": "sandboxes:exec",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:openStream": {
      "post": {
        "description": "Opens a read-only live view of a lease's display: a short-lived viewer\ntoken bound to the lease and its generation, an embeddable URL, and the\nWebRTC signaling endpoint with ICE servers. Input needs control\n(AcquireLeaseControl).",
        "operationId": "sandboxes_leases_open_stream",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "ttl": {
                    "description": "How long the token admits a new connection; at most and default 5\nminutes. A connected stream ends when the lease generation changes or the\ntoken is revoked.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.StreamSession"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Opens a read-only live view of a lease's display: a short-lived viewer token bound to the lease and its generation, an embeddable URL, and the WebRTC signaling endpoint with ICE servers. Input needs control (AcquireLeaseControl).",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE"
        ],
        "x-sylphx-method": "sandboxes.leases.open_stream",
        "x-sylphx-permission": "sandboxes:exec",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:pause": {
      "post": {
        "description": "Pauses a lease: its disk is kept and its machine destroyed; the\ngeneration increases. Process memory is not kept.",
        "operationId": "sandboxes_leases_pause",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without acting.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Lease"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "501": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Pauses a lease: its disk is kept and its machine destroyed; the generation increases. Process memory is not kept.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "UNIMPLEMENTED"
        ],
        "x-sylphx-method": "sandboxes.leases.pause",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:readFile": {
      "post": {
        "description": "Reads one file from the lease, at most 16 MiB; larger files use the\nguest's `/files`.",
        "operationId": "sandboxes_leases_read_file",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "path": {
                    "description": "The absolute path in the guest.",
                    "type": "string"
                  }
                },
                "required": [
                  "path"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.ReadLeaseFileResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Reads one file from the lease, at most 16 MiB; larger files use the guest's `/files`.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "NOT_FOUND",
          "INVALID_STATE"
        ],
        "x-sylphx-method": "sandboxes.leases.read_file",
        "x-sylphx-permission": "sandboxes:exec",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:release": {
      "post": {
        "description": "Ends a lease with END_REASON_RELEASED; the machine is destroyed and never\nleased again, and attached volumes are detached.",
        "operationId": "sandboxes_leases_release",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without acting.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Lease"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Ends a lease with END_REASON_RELEASED; the machine is destroyed and never leased again, and attached volumes are detached.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "sandboxes.leases.release",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:releaseControl": {
      "post": {
        "description": "Releases control held under `epoch`; its controller tokens stop working.",
        "operationId": "sandboxes_leases_release_control",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "epoch": {
                    "description": "The epoch AcquireLeaseControl returned.",
                    "format": "int64",
                    "type": "string"
                  }
                },
                "required": [
                  "epoch"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.ControlState"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Releases control held under `epoch`; its controller tokens stop working.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "STALE_GENERATION"
        ],
        "x-sylphx-method": "sandboxes.leases.release_control",
        "x-sylphx-permission": "sandboxes:exec",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:removeFile": {
      "post": {
        "description": "Removes one file or directory tree in the lease.",
        "operationId": "sandboxes_leases_remove_file",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "path": {
                    "description": "The absolute path in the guest.",
                    "type": "string"
                  }
                },
                "required": [
                  "path"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.RemoveLeaseFileResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Removes one file or directory tree in the lease.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "sandboxes.leases.remove_file",
        "x-sylphx-permission": "sandboxes:exec",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:renew": {
      "post": {
        "description": "Extends `expire_time`, never past the shape's longest lease. Does not\nchange the generation.",
        "operationId": "sandboxes_leases_renew",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "ttl": {
                    "description": "The new time to live from now.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without acting.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "ttl"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Lease"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Extends `expire_time`, never past the shape's longest lease. Does not change the generation.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "sandboxes.leases.renew",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:resume": {
      "post": {
        "description": "Resumes a paused lease on a machine granted now, or refuses it; the\ngeneration increases.",
        "operationId": "sandboxes_leases_resume",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without acting.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Lease"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "501": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Resumes a paused lease on a machine granted now, or refuses it; the generation increases.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "NO_CAPACITY",
          "UNIMPLEMENTED"
        ],
        "x-sylphx-method": "sandboxes.leases.resume",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:setNetwork": {
      "post": {
        "description": "Replaces a running lease's outbound policy. The generation does not\nchange; the new policy applies before the call returns.",
        "operationId": "sandboxes_leases_set_network",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "network": {
                    "$ref": "#/components/schemas/sylphx.sandboxes.v1.LeaseNetwork",
                    "description": "The new outbound policy; replaces the old one whole."
                  }
                },
                "required": [
                  "network"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Lease"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Replaces a running lease's outbound policy. The generation does not change; the new policy applies before the call returns.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "sandboxes.leases.set_network",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/leases/{lease}:writeFile": {
      "post": {
        "description": "Writes one file in the lease, at most 16 MiB, creating parent directories.",
        "operationId": "sandboxes_leases_write_file",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "lease",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "append": {
                    "description": "Append `content` to the file (created when absent) instead of replacing\nit, so a file larger than one call uploads in chunks.",
                    "type": "boolean"
                  },
                  "content": {
                    "contentEncoding": "base64",
                    "description": "The file's bytes.",
                    "type": "string"
                  },
                  "mode": {
                    "description": "The file mode bits; default 0644.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "path": {
                    "description": "The absolute path in the guest.",
                    "type": "string"
                  }
                },
                "required": [
                  "path",
                  "content"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.WriteLeaseFileResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Writes one file in the lease, at most 16 MiB, creating parent directories.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "sandboxes.leases.write_file",
        "x-sylphx-permission": "sandboxes:exec",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/licence_keys": {
      "get": {
        "description": "Lists licence keys, newest first.",
        "operationId": "money_licence_keys_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListLicenceKeysResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists licence keys, newest first.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.licence_keys.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/licence_keys/{licence_key}": {
      "get": {
        "description": "Gets a licence key (its public half, never the private).",
        "operationId": "money_licence_keys_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "licence_key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.LicenceKey"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a licence key (its public half, never the private).",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.licence_keys.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/licence_keys/{licence_key}:retire": {
      "post": {
        "description": "Retires a licence key: it stops signing new terms and stays exported for\nverification.",
        "operationId": "money_licence_keys_retire",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "licence_key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.LicenceKey"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Retires a licence key: it stops signing new terms and stays exported for verification.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.licence_keys.retire",
        "x-sylphx-permission": "billing:licence_keys.approve",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/licence_keys:generate": {
      "post": {
        "description": "Generates a licence key: Money creates the Ed25519 key, seals it, and never\nreturns the private half. Needs the approval-class scope, which the developer\nrole does not hold.",
        "operationId": "money_licence_keys_generate",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "licence_key_id": {
                    "description": "The key's id; `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`. Empty: Money assigns\none.",
                    "type": "string"
                  },
                  "spec": {
                    "$ref": "#/components/schemas/sylphx.money.v1.LicenceKeySpec",
                    "description": "Shown to operators."
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.LicenceKey"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Generates a licence key: Money creates the Ed25519 key, seals it, and never returns the private half. Needs the approval-class scope, which the developer role does not hold.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "UNKNOWN_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.licence_keys.generate",
        "x-sylphx-permission": "billing:licence_keys.approve",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/licence_keys:import": {
      "post": {
        "description": "Imports an existing Ed25519 key (PKCS8), for a key already pinned in shipped\nclients. Refused unless the expected public key is the imported key's public\nhalf.",
        "operationId": "money_licence_keys_import",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "expected_public_key": {
                    "description": "The public key shipped clients pin, raw base64url without padding. The\nimport is refused unless it is the public half of the imported key.",
                    "type": "string"
                  },
                  "licence_key_id": {
                    "description": "The key's id; as on GenerateLicenceKeyRequest. Required.",
                    "type": "string"
                  },
                  "private_key_pkcs8": {
                    "contentEncoding": "base64",
                    "description": "The Ed25519 private key as PKCS8 DER in standard base64. Write-only:\nsealed on import, never returned.",
                    "type": "string",
                    "writeOnly": true,
                    "x-sylphx-sensitive": true
                  },
                  "spec": {
                    "$ref": "#/components/schemas/sylphx.money.v1.LicenceKeySpec",
                    "description": "Shown to operators."
                  }
                },
                "required": [
                  "licence_key_id",
                  "private_key_pkcs8",
                  "expected_public_key"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.LicenceKey"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Imports an existing Ed25519 key (PKCS8), for a key already pinned in shipped clients. Refused unless the expected public key is the imported key's public half.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "UNKNOWN_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.licence_keys.import",
        "x-sylphx-permission": "billing:licence_keys.approve",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/licence_tokens": {
      "get": {
        "description": "Lists a subject's unexpired offline licence tokens of paid orders, for\nsupport. Re-derived from the frozen terms: the same bytes as at purchase.",
        "operationId": "money_licence_tokens_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter. It must name whose tokens (else `INVALID_FIELD`): `end_user = \"…\"` or\n`customer_organization = \"…\"`; `token_product = \"…\"` (joined with `AND`)\nkeeps only that product, and no `token_product` lists every product.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListLicenceTokensResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a subject's unexpired offline licence tokens of paid orders, for support. Re-derived from the frozen terms: the same bytes as at purchase.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.licence_tokens.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/log_entries/{log_entry}": {
      "get": {
        "description": "Gets a log entry.",
        "operationId": "observability_log_entries_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "log_entry",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.LogEntry"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a log entry.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "observability.log_entries.get",
        "x-sylphx-permission": "observability:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/log_entries:query": {
      "post": {
        "description": "Queries the environment's log entries over a bounded interval; follow a\ntrace with `trace_id = \"...\"`.",
        "operationId": "observability_log_entries_query",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "end_time": {
                    "description": "The interval end; default now.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "filter": {
                    "description": "AIP-160 filter over the typed, allowlisted fields.",
                    "type": "string"
                  },
                  "order_by": {
                    "description": "`time desc` (default) or `time asc`.",
                    "type": "string"
                  },
                  "page_size": {
                    "description": "At most this many; default 100, clamped to 1000.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "page_token": {
                    "description": "`next_page_token` of the previous page; bound to tenant, interval, filter,\nand order.",
                    "type": "string"
                  },
                  "start_time": {
                    "description": "The interval start; required, at most 31 days before `end_time`.",
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "start_time"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.QueryLogEntriesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Queries the environment's log entries over a bounded interval; follow a trace with `trace_id = \"...\"`.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "observability.log_entries.query",
        "x-sylphx-permission": "observability:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/log_entries:write": {
      "post": {
        "description": "Ingests a batch of log entries atomically. The same `Idempotency-Key` and\ndigest replays the same batch; a different digest under the key conflicts.",
        "operationId": "observability_log_entries_write",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "log_entries": {
                    "description": "The entries, at most 1000; only record fields are read.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.observability.v1.LogEntry"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "log_entries"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.WriteLogEntriesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Ingests a batch of log entries atomically. The same `Idempotency-Key` and digest replays the same batch; a different digest under the key conflicts.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "RATE_LIMITED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-method": "observability.log_entries.write",
        "x-sylphx-permission": "observability:ingest",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mail_domains": {
      "get": {
        "description": "Lists email domains.",
        "operationId": "notify_mail_domains_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListEmailDomainsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists email domains.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.mail_domains.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates an email domain.",
        "operationId": "notify_mail_domains_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The email domain id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "email_domain_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomain"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomain"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an email domain.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "notify.mail_domains.create",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mail_domains/{mail_domain}": {
      "delete": {
        "description": "Deletes an email domain.",
        "operationId": "notify_mail_domains_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mail_domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the email domain does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete the domain's routes.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an email domain.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.mail_domains.delete",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets an email domain.",
        "operationId": "notify_mail_domains_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mail_domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomain"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an email domain.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.mail_domains.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates an email domain.",
        "operationId": "notify_mail_domains_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mail_domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the email domain when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomain"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomain"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates an email domain.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.mail_domains.update",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mail_domains/{mail_domain}/mail_routes": {
      "get": {
        "description": "Lists an email domain's routes.",
        "operationId": "notify_mail_routes_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mail_domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListRoutesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists an email domain's routes.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.mail_routes.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a route.",
        "operationId": "notify_mail_routes_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mail_domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The route id, the final name segment; the server assigns one when empty.",
            "in": "query",
            "name": "route_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Route"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Route"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a route.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "notify.mail_routes.create",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mail_domains/{mail_domain}/mail_routes/{mail_route}": {
      "delete": {
        "description": "Deletes a route.",
        "operationId": "notify_mail_routes_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mail_domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mail_route",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the route does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a route.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "notify.mail_routes.delete",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a route.",
        "operationId": "notify_mail_routes_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mail_domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mail_route",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Route"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a route.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.mail_routes.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a route.",
        "operationId": "notify_mail_routes_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mail_domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mail_route",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the route when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Route"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Route"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a route.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.mail_routes.update",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mail_domains/{mail_domain}:verify": {
      "post": {
        "description": "Checks the domain's DNS records now instead of on the next sweep.",
        "operationId": "notify_mail_domains_verify",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mail_domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.EmailDomain"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Checks the domain's DNS records now instead of on the next sweep.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "RATE_LIMITED"
        ],
        "x-sylphx-method": "notify.mail_domains.verify",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mailbox_connect_links": {
      "get": {
        "description": "Lists mailbox connect links.",
        "operationId": "notify_mailbox_connect_links_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListMailboxConnectLinksResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists mailbox connect links.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.mailbox_connect_links.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Mints a mailbox connect link for one end user; the response carries its\n`url`, which no later call returns.",
        "operationId": "notify_mailbox_connect_links_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The mailbox connect link id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "mailbox_connect_link_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.MailboxConnectLink"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.MailboxConnectLink"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Mints a mailbox connect link for one end user; the response carries its `url`, which no later call returns.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND",
          "RESOURCE_ALREADY_EXISTS",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.mailbox_connect_links.create",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mailbox_connect_links/{mailbox_connect_link}": {
      "get": {
        "description": "Gets a mailbox connect link.",
        "operationId": "notify_mailbox_connect_links_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mailbox_connect_link",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.MailboxConnectLink"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a mailbox connect link.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.mailbox_connect_links.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mailbox_oauth_apps": {
      "get": {
        "description": "Lists mailbox OAuth apps.",
        "operationId": "notify_mailbox_oauth_apps_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListMailboxOauthAppsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists mailbox OAuth apps.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.mailbox_oauth_apps.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a mailbox OAuth app.",
        "operationId": "notify_mailbox_oauth_apps_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The mailbox OAuth app id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "mailbox_oauth_app_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.MailboxOauthApp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.MailboxOauthApp"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a mailbox OAuth app.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.mailbox_oauth_apps.create",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mailbox_oauth_apps/{mailbox_oauth_app}": {
      "delete": {
        "description": "Deletes a mailbox OAuth app; refused while a mailbox uses it.",
        "operationId": "notify_mailbox_oauth_apps_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mailbox_oauth_app",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the mailbox OAuth app does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a mailbox OAuth app; refused while a mailbox uses it.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "RESOURCE_IN_USE"
        ],
        "x-sylphx-method": "notify.mailbox_oauth_apps.delete",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a mailbox OAuth app.",
        "operationId": "notify_mailbox_oauth_apps_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mailbox_oauth_app",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.MailboxOauthApp"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a mailbox OAuth app.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.mailbox_oauth_apps.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a mailbox OAuth app.",
        "operationId": "notify_mailbox_oauth_apps_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mailbox_oauth_app",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the mailbox OAuth app when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.MailboxOauthApp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.MailboxOauthApp"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a mailbox OAuth app.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.mailbox_oauth_apps.update",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mailboxes": {
      "get": {
        "description": "Lists mailboxes.",
        "operationId": "notify_mailboxes_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListMailboxesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists mailboxes.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.mailboxes.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a mailbox.",
        "operationId": "notify_mailboxes_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The mailbox id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "mailbox_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Mailbox"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Mailbox"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a mailbox.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "notify.mailboxes.create",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mailboxes/{mailbox}": {
      "delete": {
        "description": "Deletes a mailbox and its inbound email.",
        "operationId": "notify_mailboxes_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mailbox",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the mailbox does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Delete its inbound email with it; a mailbox holding inbound email is not\ndeleted without it.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a mailbox and its inbound email.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "RESOURCE_IN_USE"
        ],
        "x-sylphx-method": "notify.mailboxes.delete",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a mailbox.",
        "operationId": "notify_mailboxes_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mailbox",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Mailbox"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a mailbox.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.mailboxes.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a mailbox.",
        "operationId": "notify_mailboxes_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mailbox",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the mailbox when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Mailbox"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Mailbox"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a mailbox.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.mailboxes.update",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mailboxes/{mailbox}/inbound_emails": {
      "get": {
        "description": "Lists a mailbox's inbound email in feed order, oldest first.",
        "operationId": "notify_inbound_emails_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mailbox",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListInboundEmailsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a mailbox's inbound email in feed order, oldest first.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.inbound_emails.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mailboxes/{mailbox}/inbound_emails/{inbound_email}": {
      "get": {
        "description": "Gets an inbound email.",
        "operationId": "notify_inbound_emails_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mailbox",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "inbound_email",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.InboundEmail"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an inbound email.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.inbound_emails.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/mailboxes/{mailbox}:eraseAddress": {
      "post": {
        "description": "Removes an address's personal data from every inbound email of the\nmailbox that it sent or that names it, keeping the dedupe keys so a poll\nnever brings the mail back.",
        "operationId": "notify_mailboxes_erase_address",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "mailbox",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "address": {
                    "description": "The email address whose data is removed.",
                    "type": "string"
                  }
                },
                "required": [
                  "address"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.EraseMailboxAddressResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Removes an address's personal data from every inbound email of the mailbox that it sent or that names it, keeping the dedupe keys so a poll never brings the mail back.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.mailboxes.erase_address",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/memory_stores": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists memory stores.",
        "operationId": "agents_memory_stores_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.ListMemoryStoresResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists memory stores.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "agents.memory_stores.list",
        "x-sylphx-permission": "agents:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a memory store.",
        "operationId": "agents_memory_stores_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The memory store id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "memory_store_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.agents.v1.MemoryStore"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.MemoryStore"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a memory store.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "agents.memory_stores.create",
        "x-sylphx-permission": "agents:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/memory_stores/{memory_store}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a memory store. A store an agent names is refused with\n`RESOURCE_IN_USE`; a store with memories is refused with `INVALID_STATE`\nunless `force` is set, which deletes them too.",
        "operationId": "agents_memory_stores_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "memory_store",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the memory store does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete the store's memories; without it, a store with memories is\nrefused with `INVALID_STATE`.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a memory store. A store an agent names is refused with `RESOURCE_IN_USE`; a store with memories is refused with `INVALID_STATE` unless `force` is set, which deletes them too.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "RESOURCE_IN_USE"
        ],
        "x-sylphx-method": "agents.memory_stores.delete",
        "x-sylphx-permission": "agents:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a memory store.",
        "operationId": "agents_memory_stores_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "memory_store",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.MemoryStore"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a memory store.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "agents.memory_stores.get",
        "x-sylphx-permission": "agents:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates a memory store.",
        "operationId": "agents_memory_stores_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "memory_store",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the memory store when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.agents.v1.MemoryStore"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.MemoryStore"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a memory store.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "agents.memory_stores.update",
        "x-sylphx-permission": "agents:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/memory_stores/{memory_store}/memories": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists a store's memories, newest first. With a publishable key, only the\ncaller's end user's memories.",
        "operationId": "agents_memories_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "memory_store",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, limited to `end_user` and `agent`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.ListMemoriesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a store's memories, newest first. With a publishable key, only the caller's end user's memories.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "RESOURCE_NOT_FOUND",
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "agents.memories.list",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nWrites a memory.",
        "operationId": "agents_memories_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "memory_store",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The memory id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "memory_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.agents.v1.Memory"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.Memory"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Writes a memory.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "agents.memories.create",
        "x-sylphx-permission": "agents:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/memory_stores/{memory_store}/memories/{memory}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a memory. An end user may delete their own.",
        "operationId": "agents_memories_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "memory_store",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "memory",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the memory does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a memory. An end user may delete their own.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "agents.memories.delete",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a memory.",
        "operationId": "agents_memories_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "memory_store",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "memory",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.Memory"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a memory.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "agents.memories.get",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nChanges a memory's content.",
        "operationId": "agents_memories_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "memory_store",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "memory",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.agents.v1.Memory"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.Memory"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Changes a memory's content.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "agents.memories.update",
        "x-sylphx-permission": "agents:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/memory_stores/{memory_store}/memories:search": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nRecalls the memories that best match a query, by hybrid full-text and\nvector search. With a publishable key, only the caller's end user's\nmemories. A read with a request body, like a query.",
        "operationId": "agents_memories_search",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "memory_store",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "agent": {
                    "description": "Only memories of this agent.",
                    "type": "string",
                    "x-sylphx-resource-reference": "agents.sylphx.com/Agent"
                  },
                  "end_user": {
                    "description": "Only memories about this end user.",
                    "type": "string",
                    "x-sylphx-resource-reference": "auth.sylphx.com/EndUser"
                  },
                  "page_size": {
                    "description": "At most this many; default 10, clamped to 100.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "page_token": {
                    "description": "`next_page_token` of the previous page.",
                    "type": "string"
                  },
                  "query": {
                    "description": "What to recall, 1 to 2000 characters.",
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.agents.v1.SearchMemoriesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Recalls the memories that best match a query, by hybrid full-text and vector search. With a publishable key, only the caller's end user's memories. A read with a request body, like a query.",
        "tags": [
          "agents"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "agents.memories.search",
        "x-sylphx-permission": "agents:sessions",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/merchant_accounts": {
      "get": {
        "description": "Lists merchant accounts.",
        "operationId": "money_merchant_accounts_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListMerchantAccountsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists merchant accounts.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.merchant_accounts.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/merchant_accounts/{merchant_account}": {
      "get": {
        "description": "Gets a merchant account.",
        "operationId": "money_merchant_accounts_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "merchant_account",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.MerchantAccount"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a merchant account.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.merchant_accounts.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates the merchant account's own settings: the fields named in `update_mask`.",
        "operationId": "money_merchant_accounts_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "merchant_account",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to change.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.MerchantAccount"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.MerchantAccount"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates the merchant account's own settings: the fields named in `update_mask`.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "INVALID_STATE",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.merchant_accounts.update",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/merchant_accounts/{merchant_account}:disconnect": {
      "post": {
        "description": "Disconnects the account: Sylphx loses access; checkout is refused.",
        "operationId": "money_merchant_accounts_disconnect",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "merchant_account",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.MerchantAccount"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Disconnects the account: Sylphx loses access; checkout is refused.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "money.merchant_accounts.disconnect",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/merchant_accounts/{merchant_account}:refresh": {
      "post": {
        "description": "Reads the connected account back from the processor.",
        "operationId": "money_merchant_accounts_refresh",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "merchant_account",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.MerchantAccount"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Reads the connected account back from the processor.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "money.merchant_accounts.refresh",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/merchant_accounts:connect": {
      "post": {
        "description": "Starts connecting a Stripe account: returns the processor's authorisation\nURL for an org owner to open, which the processor's redirect completes.\nWith a restricted key in the request the account connects at once\ninstead, and the connected merchant account comes back in the response.",
        "operationId": "money_merchant_accounts_connect",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "merchant_account_id": {
                    "description": "The merchant account id; default `default`.",
                    "type": "string"
                  },
                  "restricted_key": {
                    "description": "A Stripe restricted key (`rk_test_…` or `rk_live_…`); when set, no OAuth\nhappens: the account is read and connected at once. Write-only: sealed on\nwrite, never returned, never logged. A secret key (`sk_…`) is refused,\nbecause a restricted key can be limited to what payments need.",
                    "type": "string",
                    "writeOnly": true,
                    "x-sylphx-sensitive": true
                  },
                  "return_url": {
                    "description": "Where the browser returns after the processor, with `status` and, on\nsuccess, `merchant_account` in the query. HTTPS only. Required for the\nOAuth connection; unused, and so optional, with `restricted_key`.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ConnectMerchantAccountResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Starts connecting a Stripe account: returns the processor's authorisation URL for an org owner to open, which the processor's redirect completes. With a restricted key in the request the account connects at once instead, and the connected merchant account comes back in the response.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "money.merchant_accounts.connect",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/messages": {
      "get": {
        "description": "Lists messages.",
        "operationId": "notify_messages_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListMessagesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists messages.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.messages.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Sends a Message.",
        "operationId": "notify_messages_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The message id, the final name segment; the server assigns one when empty.",
            "in": "query",
            "name": "message_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Message"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Message"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Sends a Message.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "RATE_LIMITED",
          "INVALID_STATE"
        ],
        "x-sylphx-method": "notify.messages.create",
        "x-sylphx-permission": "notify:send",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/messages/{message}": {
      "get": {
        "description": "Gets a message.",
        "operationId": "notify_messages_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "message",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Message"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a message.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.messages.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/messages/{message}:cancel": {
      "post": {
        "description": "Cancels a Message whose deliveries have not been handed off.",
        "operationId": "notify_messages_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "message",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Message"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Cancels a Message whose deliveries have not been handed off.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.messages.cancel",
        "x-sylphx-permission": "notify:send",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/oauth_clients": {
      "get": {
        "description": "Lists OAuth clients.",
        "operationId": "auth_oauth_clients_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.ListOauthClientsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists OAuth clients.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "auth.oauth_clients.list",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates an OAuth client.",
        "operationId": "auth_oauth_clients_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The OAuth client id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "oauth_client_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.auth.v1.OauthClient"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.OauthClient"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an OAuth client.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "auth.oauth_clients.create",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/oauth_clients/{oauth_client}": {
      "delete": {
        "description": "Deletes an OAuth client.",
        "operationId": "auth_oauth_clients_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "oauth_client",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the OAuth client does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an OAuth client.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.oauth_clients.delete",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets an OAuth client.",
        "operationId": "auth_oauth_clients_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "oauth_client",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.OauthClient"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an OAuth client.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "auth.oauth_clients.get",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates an OAuth client.",
        "operationId": "auth_oauth_clients_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "oauth_client",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the OAuth client when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.auth.v1.OauthClient"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.OauthClient"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates an OAuth client.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.oauth_clients.update",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/oauth_clients/{oauth_client}:rollSecret": {
      "post": {
        "description": "Issues a new client secret, returned once; the old one verifies until\n`grace_period` ends.",
        "operationId": "auth_oauth_clients_roll_secret",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "oauth_client",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "grace_period": {
                    "description": "How long the old secret keeps verifying; default 24h.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without writing anything.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.OauthClient"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Issues a new client secret, returned once; the old one verifies until `grace_period` ends.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-method": "auth.oauth_clients.roll_secret",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/organization_roles": {
      "get": {
        "description": "Lists organization roles.",
        "operationId": "auth_organization_roles_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.ListOrganizationRolesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists organization roles.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "auth.organization_roles.list",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates an organization role.",
        "operationId": "auth_organization_roles_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The organization role id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "organization_role_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.auth.v1.OrganizationRole"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.OrganizationRole"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an organization role.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "auth.organization_roles.create",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/organization_roles/{organization_role}": {
      "delete": {
        "description": "Deletes an organization role.",
        "operationId": "auth_organization_roles_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "organization_role",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the organization role does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an organization role.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.organization_roles.delete",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets an organization role.",
        "operationId": "auth_organization_roles_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "organization_role",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.OrganizationRole"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an organization role.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "auth.organization_roles.get",
        "x-sylphx-permission": "auth:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates an organization role.",
        "operationId": "auth_organization_roles_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "organization_role",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.auth.v1.OrganizationRole"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.auth.v1.OrganizationRole"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates an organization role.",
        "tags": [
          "auth"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "auth.organization_roles.update",
        "x-sylphx-permission": "auth:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/pools": {
      "get": {
        "description": "Lists pools in a environment.",
        "operationId": "sandboxes_pools_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.ListPoolsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists pools in a environment.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "sandboxes.pools.list",
        "x-sylphx-permission": "sandboxes:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a pool. The Operation is done when the controller settles it.",
        "operationId": "sandboxes_pools_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "pool_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.sandboxes.v1.Pool"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a pool. The Operation is done when the controller settles it.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.sandboxes.v1.Pool"
        },
        "x-sylphx-method": "sandboxes.pools.create",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/pools/{pool}": {
      "delete": {
        "description": "Deletes a pool.",
        "operationId": "sandboxes_pools_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "pool",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a pool.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "sandboxes.pools.delete",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a pool.",
        "operationId": "sandboxes_pools_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "pool",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Pool"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a pool.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "sandboxes.pools.get",
        "x-sylphx-permission": "sandboxes:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a pool.",
        "operationId": "sandboxes_pools_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "pool",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.sandboxes.v1.Pool"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a pool.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.sandboxes.v1.Pool"
        },
        "x-sylphx-method": "sandboxes.pools.update",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/portal_sessions": {
      "post": {
        "description": "Creates a customer portal session for a subject.",
        "operationId": "money_portal_sessions_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id, the final name segment; the server assigns one when empty.",
            "in": "query",
            "name": "portal_session_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.PortalSession"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.PortalSession"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a customer portal session for a subject.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "INVALID_STATE",
          "UNAVAILABLE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.portal_sessions.create",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/portal_sessions/{portal_session}": {
      "get": {
        "description": "Gets a portal session.",
        "operationId": "money_portal_sessions_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "portal_session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.PortalSession"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a portal session.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.portal_sessions.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/previews": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists previews in a environment.",
        "operationId": "hosting_previews_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.hosting.v1.ListPreviewsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists previews in a environment.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "hosting.previews.list",
        "x-sylphx-permission": "hosting:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a preview. The Operation is done when the controller settles it.",
        "operationId": "hosting_previews_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "preview_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.hosting.v1.Preview"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a preview. The Operation is done when the controller settles it.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.hosting.v1.Preview"
        },
        "x-sylphx-method": "hosting.previews.create",
        "x-sylphx-permission": "hosting:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/previews/{preview}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a preview.",
        "operationId": "hosting_previews_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "preview",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a preview.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "hosting.previews.delete",
        "x-sylphx-permission": "hosting:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a preview.",
        "operationId": "hosting_previews_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "preview",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.hosting.v1.Preview"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a preview.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "hosting.previews.get",
        "x-sylphx-permission": "hosting:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/price_catalogs/{price_catalog}": {
      "get": {
        "description": "Gets the environment's catalog.",
        "operationId": "money_price_catalogs_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "price_catalog",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.Catalog"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets the environment's catalog.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.price_catalogs.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates the environment's catalog: its features and products, whole.",
        "operationId": "money_price_catalogs_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "price_catalog",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the catalog when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.Catalog"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.Catalog"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates the environment's catalog: its features and products, whole.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.price_catalogs.update",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/price_catalogs/{price_catalog}:sync": {
      "post": {
        "description": "Pushes the catalog to the merchant account's processor now: products and\nprices by lookup key; an amount change makes a new price.",
        "operationId": "money_price_catalogs_sync",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "price_catalog",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.Catalog"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Pushes the catalog to the merchant account's processor now: products and prices by lookup key; an amount change makes a new price.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "money.price_catalogs.sync",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/private_links": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists private links in a environment.",
        "operationId": "network_private_links_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.network.v1.ListPrivateLinksResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists private links in a environment.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "network.private_links.list",
        "x-sylphx-permission": "network:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a private link. The Operation is done when the controller settles\nit.",
        "operationId": "network_private_links_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "private_link_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.network.v1.PrivateLink"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a private link. The Operation is done when the controller settles it.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.network.v1.PrivateLink"
        },
        "x-sylphx-method": "network.private_links.create",
        "x-sylphx-permission": "network:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/private_links/{private_link}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a private link.",
        "operationId": "network_private_links_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "private_link",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a private link.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "network.private_links.delete",
        "x-sylphx-permission": "network:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a private link.",
        "operationId": "network_private_links_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "private_link",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.network.v1.PrivateLink"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a private link.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "network.private_links.get",
        "x-sylphx-permission": "network:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates a private link.",
        "operationId": "network_private_links_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "private_link",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.network.v1.PrivateLink"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a private link.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.network.v1.PrivateLink"
        },
        "x-sylphx-method": "network.private_links.update",
        "x-sylphx-permission": "network:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/profiles": {
      "get": {
        "description": "Lists the profiles of an environment.",
        "operationId": "secrets_profiles_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.ListProfilesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists the profiles of an environment.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "secrets.profiles.list",
        "x-sylphx-permission": "secrets:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates an empty profile; its first version is written by a write-back\nmount (`:open` with WRITE_BACK, then `:commit`).",
        "operationId": "secrets_profiles_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the new profile, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "in": "query",
            "name": "profile_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.secrets.v1.Profile"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.Profile"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates an empty profile; its first version is written by a write-back mount (`:open` with WRITE_BACK, then `:commit`).",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "secrets.profiles.create",
        "x-sylphx-permission": "secrets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/profiles/{profile}": {
      "delete": {
        "description": "Deletes a profile; with `force`, a profile that has versions too, which\ndestroys every version.",
        "operationId": "secrets_profiles_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "profile",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also destroy every version; without it a profile with versions fails\nwith INVALID_STATE.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a profile; with `force`, a profile that has versions too, which destroys every version.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE"
        ],
        "x-sylphx-method": "secrets.profiles.delete",
        "x-sylphx-permission": "secrets:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a profile: its kind, grants, sites and latest version; never a value.",
        "operationId": "secrets_profiles_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "profile",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.Profile"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a profile: its kind, grants, sites and latest version; never a value.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "secrets.profiles.get",
        "x-sylphx-permission": "secrets:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a profile's grants or declared paths. Granting a mount is this\ncall: nothing else adds a grant.",
        "operationId": "secrets_profiles_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "profile",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write (`spec.grants`, `spec.paths`); unset writes both.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.secrets.v1.Profile"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.Profile"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a profile's grants or declared paths. Granting a mount is this call: nothing else adds a grant.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "secrets.profiles.update",
        "x-sylphx-permission": "secrets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/profiles/{profile}/profile_versions": {
      "get": {
        "description": "Lists a profile's versions, newest first.",
        "operationId": "secrets_profile_versions_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "profile",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.ListProfileVersionsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a profile's versions, newest first.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "secrets.profile_versions.list",
        "x-sylphx-permission": "secrets:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/profiles/{profile}/profile_versions/{profile_version}": {
      "get": {
        "description": "Gets a profile version: its sites and lineage; never a value.",
        "operationId": "secrets_profile_versions_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "profile",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "profile_version",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileVersion"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a profile version: its sites and lineage; never a value.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "secrets.profile_versions.get",
        "x-sylphx-permission": "secrets:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/profiles/{profile}:commit": {
      "post": {
        "description": "Writes a mounted profile back as a new version, by compare-and-set on the\nversion the attachment was opened at (or last committed). When another\nwrite landed first, nothing is lost: the result is still a new version,\nmerged site by site with the newer write winning, and marked as a\nconflict.",
        "operationId": "secrets_profiles_commit",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "profile",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "attachment": {
                    "description": "The `attachment` OpenProfile returned with WRITE_BACK.",
                    "type": "string"
                  },
                  "state": {
                    "contentEncoding": "base64",
                    "description": "The whole state to write, in the profile kind's form, at most 2 MiB.",
                    "type": "string",
                    "x-sylphx-sensitive": true
                  }
                },
                "required": [
                  "attachment",
                  "state"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.CommitProfileResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Writes a mounted profile back as a new version, by compare-and-set on the version the attachment was opened at (or last committed). When another write landed first, nothing is lost: the result is still a new version, merged site by site with the newer write winning, and marked as a conflict.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "secrets.profiles.commit",
        "x-sylphx-permission": "secrets:mount",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/profiles/{profile}:open": {
      "post": {
        "description": "Mounts a profile for one session: returns the state of one version and,\nfor WRITE_BACK, an attachment that `:commit` writes through until it\nexpires. Every call is audited with the caller's context; the caller's\nprincipal needs a grant of at least the requested mode.",
        "operationId": "secrets_profiles_open",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "profile",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "context": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Who mounts it, for the audit trail: for example `run`, `step`, `member`.\nAt most 16 entries; keys and values are names, never values.",
                    "type": "object"
                  },
                  "mode": {
                    "$ref": "#/components/schemas/sylphx.secrets.v1.ProfileMountMode",
                    "description": "READ_ONLY (the default) or WRITE_BACK."
                  },
                  "ttl": {
                    "description": "How long a WRITE_BACK attachment may commit; default 1 hour, at most 12\nhours. A lost session cannot write back after it.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  },
                  "version": {
                    "description": "A version to mount; unset mounts the latest.",
                    "type": "string",
                    "x-sylphx-resource-reference": "secrets.sylphx.com/ProfileVersion"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.OpenProfileResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Mounts a profile for one session: returns the state of one version and, for WRITE_BACK, an attachment that `:commit` writes through until it expires. Every call is audited with the caller's context; the caller's principal needs a grant of at least the requested mode.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "secrets.profiles.open",
        "x-sylphx-permission": "secrets:mount",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/queues": {
      "get": {
        "description": "Lists queues.",
        "operationId": "events_queues_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.ListQueuesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists queues.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "events.queues.list",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a queue.",
        "operationId": "events_queues_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The queue id, the final name segment; the server assigns one when empty.",
            "in": "query",
            "name": "queue_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.events.v1.Queue"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.Queue"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a queue.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "events.queues.create",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/queues/{queue}": {
      "delete": {
        "description": "Deletes a queue.",
        "operationId": "events_queues_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "queue",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the queue does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a queue.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.queues.delete",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a queue.",
        "operationId": "events_queues_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "queue",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.Queue"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a queue.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "events.queues.get",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a queue.",
        "operationId": "events_queues_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "queue",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the queue when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.events.v1.Queue"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.Queue"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a queue.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.queues.update",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/queues/{queue}:ack": {
      "post": {
        "description": "Acknowledges leased messages; each is removed. A lease that is stale\n(expired or superseded) is reported, not applied.",
        "operationId": "events_queues_ack",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "queue",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "leases": {
                    "description": "The leases to ack, at most 100.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.events.v1.MessageLease"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "leases"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.AckQueueMessagesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Acknowledges leased messages; each is removed. A lease that is stale (expired or superseded) is reported, not applied.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "events.queues.ack",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/queues/{queue}:lease": {
      "post": {
        "description": "Leases up to `max_messages` ready messages for the visibility timeout.",
        "operationId": "events_queues_lease",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "queue",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "max_messages": {
                    "description": "At most this many; default 1, at most 100.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "visibility_timeout": {
                    "description": "Override the Queue's visibility timeout for this lease.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  },
                  "wait": {
                    "description": "Wait up to this long (at most 20s) for a message when none is ready.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.LeaseQueueMessagesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Leases up to `max_messages` ready messages for the visibility timeout.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "RATE_LIMITED"
        ],
        "x-sylphx-method": "events.queues.lease",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/queues/{queue}:nack": {
      "post": {
        "description": "Returns leased messages to the Queue after `delay`; each nack counts as a\ndelivery.",
        "operationId": "events_queues_nack",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "queue",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "delay": {
                    "description": "Hide the messages this long before the next lease.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  },
                  "leases": {
                    "description": "The leases to nack, at most 100.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.events.v1.MessageLease"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "leases"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.NackQueueMessagesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Returns leased messages to the Queue after `delay`; each nack counts as a delivery.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "events.queues.nack",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/queues/{queue}:replay": {
      "post": {
        "description": "Moves dead-lettered messages, optionally bounded by dead-letter time, back\nto ready.",
        "operationId": "events_queues_replay",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "queue",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "end_time": {
                    "description": "Replay messages dead-lettered before this time.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "start_time": {
                    "description": "Replay messages dead-lettered at or after this time.",
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.ReplayQueueResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Moves dead-lettered messages, optionally bounded by dead-letter time, back to ready.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.queues.replay",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/queues/{queue}:send": {
      "post": {
        "description": "Enqueues messages directly, without a Subscription.",
        "operationId": "events_queues_send",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "queue",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "delay": {
                    "description": "Hide the messages this long before their first lease.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  },
                  "events": {
                    "description": "The messages, at most 100.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.events.v1.CloudEvent"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "events"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.SendQueueMessagesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Enqueues messages directly, without a Subscription.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "RATE_LIMITED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-method": "events.queues.send",
        "x-sylphx-permission": "events:publish",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/realtime_channels": {
      "get": {
        "description": "Lists realtime channels.",
        "operationId": "events_realtime_channels_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.ListRealtimeChannelsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists realtime channels.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "events.realtime_channels.list",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a realtime channel.",
        "operationId": "events_realtime_channels_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The realtime channel id, the final name segment; the server assigns one\nwhen empty.",
            "in": "query",
            "name": "realtime_channel_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.events.v1.RealtimeChannel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.RealtimeChannel"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a realtime channel.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "events.realtime_channels.create",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/realtime_channels/{realtime_channel}": {
      "delete": {
        "description": "Deletes a realtime channel.",
        "operationId": "events_realtime_channels_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "realtime_channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the realtime channel does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete the channel's history. Without it, a channel with retained\nmessages is still deleted and its history stops being readable.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a realtime channel.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.realtime_channels.delete",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a realtime channel.",
        "operationId": "events_realtime_channels_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "realtime_channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.RealtimeChannel"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a realtime channel.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "events.realtime_channels.get",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a realtime channel.",
        "operationId": "events_realtime_channels_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "realtime_channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the realtime channel when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.events.v1.RealtimeChannel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.RealtimeChannel"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a realtime channel.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.realtime_channels.update",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/realtime_channels/{realtime_channel}/realtime_members": {
      "get": {
        "description": "Lists the clients present in a channel now.",
        "operationId": "events_realtime_members_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "realtime_channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.ListRealtimeMembersResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists the clients present in a channel now.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "events.realtime_members.list",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/realtime_channels/{realtime_channel}/realtime_members/{realtime_member}": {
      "get": {
        "description": "Gets one client present in a channel.",
        "operationId": "events_realtime_members_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "realtime_channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "realtime_member",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.RealtimeMember"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets one client present in a channel.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "events.realtime_members.get",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/realtime_channels/{realtime_channel}/realtime_messages": {
      "get": {
        "description": "Lists a channel's retained messages, oldest first.",
        "operationId": "events_realtime_messages_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "realtime_channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Empty, or `sequence > N` to start after message N (resume).",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.ListRealtimeMessagesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a channel's retained messages, oldest first.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "events.realtime_messages.list",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/realtime_channels/{realtime_channel}/realtime_messages/{realtime_message}": {
      "get": {
        "description": "Gets one retained message of a channel.",
        "operationId": "events_realtime_messages_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "realtime_channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "realtime_message",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.RealtimeMessage"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets one retained message of a channel.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "events.realtime_messages.get",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/realtime_channels/{realtime_channel}:issueToken": {
      "post": {
        "description": "Mints a subscribe token (`rtt_…`) for this channel alone, at most an hour\nlong, for a browser or device that holds no key. A token that names a\nclient id enters the channel's presence while it is connected.",
        "operationId": "events_realtime_channels_issue_token",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "realtime_channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "client_data": {
                    "description": "The client's presence data, at most 4 KiB as JSON."
                  },
                  "client_id": {
                    "description": "The client this token is for; with it, the connection enters presence.",
                    "type": "string"
                  },
                  "ttl": {
                    "description": "How long the token lives; default and at most 1 hour, at least 1 minute.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.IssueRealtimeChannelTokenResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Mints a subscribe token (`rtt_…`) for this channel alone, at most an hour long, for a browser or device that holds no key. A token that names a client id enters the channel's presence while it is connected.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "events.realtime_channels.issue_token",
        "x-sylphx-permission": "events:publish",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/realtime_channels/{realtime_channel}:publish": {
      "post": {
        "description": "Publishes one message to the channel: it is appended to the channel's\nhistory and pushed to every connected client. A retry with the same\nIdempotency-Key returns the first message.",
        "operationId": "events_realtime_channels_publish",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "realtime_channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "client_id": {
                    "description": "The publisher's client id, shown to subscribers.",
                    "type": "string"
                  },
                  "data": {
                    "description": "The payload; at most 64 KiB as JSON."
                  },
                  "message_type": {
                    "description": "The message name, 1 to 255 of `[A-Za-z0-9._:-]`.",
                    "type": "string"
                  }
                },
                "required": [
                  "message_type"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.PublishRealtimeMessagesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Publishes one message to the channel: it is appended to the channel's history and pushed to every connected client. A retry with the same Idempotency-Key returns the first message.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.realtime_channels.publish",
        "x-sylphx-permission": "events:publish",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/recipients": {
      "get": {
        "description": "Lists recipients.",
        "operationId": "notify_recipients_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListRecipientsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists recipients.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.recipients.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a recipient.",
        "operationId": "notify_recipients_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The recipient id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "recipient_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Recipient"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Recipient"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a recipient.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "notify.recipients.create",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}": {
      "delete": {
        "description": "Deletes a recipient.",
        "operationId": "notify_recipients_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "recipient",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the recipient does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete the recipient's preferences and inbox items.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a recipient.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.recipients.delete",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a recipient.",
        "operationId": "notify_recipients_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "recipient",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Recipient"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a recipient.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.recipients.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a recipient.",
        "operationId": "notify_recipients_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "recipient",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the recipient when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Recipient"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Recipient"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a recipient.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.recipients.update",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}/inbox_items": {
      "get": {
        "description": "Lists inbox items.",
        "operationId": "notify_inbox_items_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "recipient",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListInboxItemsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists inbox items.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.inbox_items.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}/inbox_items/{inbox_item}": {
      "get": {
        "description": "Gets an inbox item.",
        "operationId": "notify_inbox_items_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "recipient",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "inbox_item",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.InboxItem"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an inbox item.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.inbox_items.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}/inbox_items/{inbox_item}:archive": {
      "post": {
        "description": "Archives an inbox item.",
        "operationId": "notify_inbox_items_archive",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "recipient",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "inbox_item",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.InboxItem"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Archives an inbox item.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.inbox_items.archive",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}/inbox_items/{inbox_item}:markRead": {
      "post": {
        "description": "Marks an inbox item read.",
        "operationId": "notify_inbox_items_mark_read",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "recipient",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "inbox_item",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.InboxItem"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Marks an inbox item read.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.inbox_items.mark_read",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}/inbox_items/{inbox_item}:markUnread": {
      "post": {
        "description": "Marks an inbox item unread.",
        "operationId": "notify_inbox_items_mark_unread",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "recipient",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "inbox_item",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.InboxItem"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Marks an inbox item unread.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.inbox_items.mark_unread",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}/preferences": {
      "get": {
        "description": "Lists preferences.",
        "operationId": "notify_preferences_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "recipient",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListPreferencesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists preferences.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.preferences.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}/preferences/{preference}": {
      "delete": {
        "description": "Deletes a preference.",
        "operationId": "notify_preferences_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "recipient",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "preference",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the preference does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a preference.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.preferences.delete",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a preference.",
        "operationId": "notify_preferences_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "recipient",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "preference",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Preference"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a preference.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.preferences.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a preference.",
        "operationId": "notify_preferences_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "recipient",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "preference",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the preference when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Preference"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Preference"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a preference.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.preferences.update",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/releases": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists releases in an environment, newest first by default.",
        "operationId": "release_releases_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.release.v1.ListReleasesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists releases in an environment, newest first by default.",
        "tags": [
          "release"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "release.releases.list",
        "x-sylphx-permission": "release:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a release: admits it and rolls it out in waves. The Operation is done when the release is live or halted.",
        "operationId": "release_releases_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the new release, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "in": "query",
            "name": "release_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.release.v1.Release"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a release: admits it and rolls it out in waves. The Operation is done when the release is live or halted.",
        "tags": [
          "release"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "INVALID_STATE"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.release.v1.Release"
        },
        "x-sylphx-method": "release.releases.create",
        "x-sylphx-permission": "release:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/releases/{release}": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a release.",
        "operationId": "release_releases_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "release",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.release.v1.Release"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a release.",
        "tags": [
          "release"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "release.releases.get",
        "x-sylphx-permission": "release:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/rollouts": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists rollouts in an environment.",
        "operationId": "release_rollouts_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.release.v1.ListRolloutsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists rollouts in an environment.",
        "tags": [
          "release"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "release.rollouts.list",
        "x-sylphx-permission": "release:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/rollouts/{rollout}": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a rollout.",
        "operationId": "release_rollouts_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "rollout",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.release.v1.Rollout"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a rollout.",
        "tags": [
          "release"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "release.rollouts.get",
        "x-sylphx-permission": "release:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/routes": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists routes in a environment.",
        "operationId": "network_routes_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.network.v1.ListRoutesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists routes in a environment.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "network.routes.list",
        "x-sylphx-permission": "network:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a route. The Operation is done when the controller settles it.",
        "operationId": "network_routes_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "route_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.network.v1.Route"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a route. The Operation is done when the controller settles it.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.network.v1.Route"
        },
        "x-sylphx-method": "network.routes.create",
        "x-sylphx-permission": "network:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/routes/{route}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a route.",
        "operationId": "network_routes_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "route",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a route.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "network.routes.delete",
        "x-sylphx-permission": "network:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a route.",
        "operationId": "network_routes_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "route",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.network.v1.Route"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a route.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "network.routes.get",
        "x-sylphx-permission": "network:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates a route.",
        "operationId": "network_routes_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "route",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.network.v1.Route"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a route.",
        "tags": [
          "network"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.network.v1.Route"
        },
        "x-sylphx-method": "network.routes.update",
        "x-sylphx-permission": "network:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/schedules": {
      "get": {
        "description": "Lists schedules.",
        "operationId": "workflows_schedules_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.ListSchedulesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists schedules.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "workflows.schedules.list",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a schedule.",
        "operationId": "workflows_schedules_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The schedule id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "schedule_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.workflows.v1.Schedule"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a schedule.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.workflows.v1.Schedule"
        },
        "x-sylphx-method": "workflows.schedules.create",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/schedules/{schedule}": {
      "delete": {
        "description": "Deletes a schedule.",
        "operationId": "workflows_schedules_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "schedule",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the schedule does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a schedule.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "workflows.schedules.delete",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a schedule.",
        "operationId": "workflows_schedules_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "schedule",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.Schedule"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a schedule.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "workflows.schedules.get",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a schedule; with `allow_missing` it creates the schedule when it\ndoes not exist, so its short name `schedule` is an upsert by name.",
        "operationId": "workflows_schedules_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "schedule",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the schedule when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.workflows.v1.Schedule"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a schedule; with `allow_missing` it creates the schedule when it does not exist, so its short name `schedule` is an upsert by name.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.workflows.v1.Schedule"
        },
        "x-sylphx-method": "workflows.schedules.update",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/schedules/{schedule}:pause": {
      "post": {
        "description": "Pauses a Schedule: no fire starts a Run until it is resumed.",
        "operationId": "workflows_schedules_pause",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "schedule",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "pause_note": {
                    "description": "Why the Schedule is paused.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without writing anything.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Pauses a Schedule: no fire starts a Run until it is resumed.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.workflows.v1.Schedule"
        },
        "x-sylphx-method": "workflows.schedules.pause",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/schedules/{schedule}:resume": {
      "post": {
        "description": "Resumes a paused Schedule; missed fires follow `catchup_window`.",
        "operationId": "workflows_schedules_resume",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "schedule",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without writing anything.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Resumes a paused Schedule; missed fires follow `catchup_window`.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "ETAG_MISMATCH"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.workflows.v1.Schedule"
        },
        "x-sylphx-method": "workflows.schedules.resume",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/scrubbing_policies/{scrubbing_policy}": {
      "get": {
        "description": "Gets the environment's scrubbing policy (`scrubbing_policies/default`).",
        "operationId": "observability_scrubbing_policies_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "scrubbing_policy",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.ScrubbingPolicy"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets the environment's scrubbing policy (`scrubbing_policies/default`).",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "observability.scrubbing_policies.get",
        "x-sylphx-permission": "observability:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates the environment's scrubbing policy.",
        "operationId": "observability_scrubbing_policies_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "scrubbing_policy",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.observability.v1.ScrubbingPolicy"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.ScrubbingPolicy"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates the environment's scrubbing policy.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "observability.scrubbing_policies.update",
        "x-sylphx-permission": "observability:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/search_indexes": {
      "get": {
        "description": "Lists search indexs in a environment.",
        "operationId": "data_search_indexes_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ListSearchIndexesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists search indexs in a environment.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "data.search_indexes.list",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a search index. The Operation is done when the controller settles\nit.",
        "operationId": "data_search_indexes_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "search_index_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.data.v1.SearchIndex"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a search index. The Operation is done when the controller settles it.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.data.v1.SearchIndex"
        },
        "x-sylphx-method": "data.search_indexes.create",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/search_indexes/{search_index}": {
      "delete": {
        "description": "Deletes a search index. Fails while `spec.deletion_protection` is set.",
        "operationId": "data_search_indexes_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "search_index",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a search index. Fails while `spec.deletion_protection` is set.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "DELETION_PROTECTED",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "data.search_indexes.delete",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a search index.",
        "operationId": "data_search_indexes_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "search_index",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.SearchIndex"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a search index.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.search_indexes.get",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a search index.",
        "operationId": "data_search_indexes_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "search_index",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.data.v1.SearchIndex"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a search index.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.data.v1.SearchIndex"
        },
        "x-sylphx-method": "data.search_indexes.update",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/search_indexes/{search_index}:connect": {
      "post": {
        "description": "Returns how to connect to the search index: its endpoint and its own\nengine credentials. The credentials are not API keys and are returned only\nhere.",
        "operationId": "data_search_indexes_connect",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "search_index",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.ConnectSearchIndexResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Returns how to connect to the search index: its endpoint and its own engine credentials. The credentials are not API keys and are returned only here.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE"
        ],
        "x-sylphx-method": "data.search_indexes.connect",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/search_indexes/{search_index}:rotateCredentials": {
      "post": {
        "description": "Replaces the search index's engine credentials; the old ones stop working\nonce the new ones are served.",
        "operationId": "data_search_indexes_rotate_credentials",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "search_index",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without acting.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Replaces the search index's engine credentials; the old ones stop working once the new ones are served.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.data.v1.SearchIndex"
        },
        "x-sylphx-method": "data.search_indexes.rotate_credentials",
        "x-sylphx-permission": "data:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/secret_bindings": {
      "get": {
        "description": "Lists secret bindings in an environment.",
        "operationId": "secrets_secret_bindings_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.ListSecretBindingsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists secret bindings in an environment.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "secrets.secret_bindings.list",
        "x-sylphx-permission": "secrets:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a secret binding.",
        "operationId": "secrets_secret_bindings_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the new secret binding, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "in": "query",
            "name": "secret_binding_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.secrets.v1.SecretBinding"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.SecretBinding"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a secret binding.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "secrets.secret_bindings.create",
        "x-sylphx-permission": "secrets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/secret_bindings/{secret_binding}": {
      "delete": {
        "description": "Deletes a secret binding.",
        "operationId": "secrets_secret_bindings_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret_binding",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a secret binding.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "secrets.secret_bindings.delete",
        "x-sylphx-permission": "secrets:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a secret binding.",
        "operationId": "secrets_secret_bindings_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret_binding",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.SecretBinding"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a secret binding.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "secrets.secret_bindings.get",
        "x-sylphx-permission": "secrets:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a secret binding.",
        "operationId": "secrets_secret_bindings_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret_binding",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.secrets.v1.SecretBinding"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.SecretBinding"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a secret binding.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "secrets.secret_bindings.update",
        "x-sylphx-permission": "secrets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/secrets": {
      "get": {
        "description": "Lists secrets in an environment.",
        "operationId": "secrets_secrets_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.ListSecretsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists secrets in an environment.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "secrets.secrets.list",
        "x-sylphx-permission": "secrets:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a secret, without a value; add one with CreateSecretVersion.",
        "operationId": "secrets_secrets_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the new secret, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "in": "query",
            "name": "secret_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.secrets.v1.Secret"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.Secret"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a secret, without a value; add one with CreateSecretVersion.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "secrets.secrets.create",
        "x-sylphx-permission": "secrets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/secrets/{secret}": {
      "delete": {
        "description": "Deletes a secret and destroys every version.",
        "operationId": "secrets_secrets_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete every child Resource; without it a parent with children\nfails with FAILED_PRECONDITION.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a secret and destroys every version.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "DELETION_PROTECTED"
        ],
        "x-sylphx-method": "secrets.secrets.delete",
        "x-sylphx-permission": "secrets:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a secret.",
        "operationId": "secrets_secrets_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.Secret"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a secret.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "secrets.secrets.get",
        "x-sylphx-permission": "secrets:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a secret.",
        "operationId": "secrets_secrets_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.secrets.v1.Secret"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.Secret"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a secret.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "secrets.secrets.update",
        "x-sylphx-permission": "secrets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/secrets/{secret}/secret_versions": {
      "get": {
        "description": "Lists a secret's versions.",
        "operationId": "secrets_secret_versions_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.ListSecretVersionsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a secret's versions.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "secrets.secret_versions.list",
        "x-sylphx-permission": "secrets:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Adds a value to a secret as its newest version. The value is never returned.",
        "operationId": "secrets_secret_versions_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.secrets.v1.SecretVersion"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.SecretVersion"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Adds a value to a secret as its newest version. The value is never returned.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "secrets.secret_versions.create",
        "x-sylphx-permission": "secrets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/secrets/{secret}/secret_versions/{secret_version}": {
      "get": {
        "description": "Gets a secret version.",
        "operationId": "secrets_secret_versions_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret_version",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.SecretVersion"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a secret version.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "secrets.secret_versions.get",
        "x-sylphx-permission": "secrets:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/secrets/{secret}/secret_versions/{secret_version}:access": {
      "post": {
        "description": "Reads a secret version's value back. Break-glass: a separate permission,\naudited on every call, and never exposed to MCP.",
        "operationId": "secrets_secret_versions_access",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret_version",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.AccessSecretVersionResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Reads a secret version's value back. Break-glass: a separate permission, audited on every call, and never exposed to MCP.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE"
        ],
        "x-sylphx-method": "secrets.secret_versions.access",
        "x-sylphx-permission": "secrets:access",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/secrets/{secret}/secret_versions/{secret_version}:destroy": {
      "post": {
        "description": "Destroys a secret version's value irrecoverably.",
        "operationId": "secrets_secret_versions_destroy",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret_version",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Destroy only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without changing anything.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.SecretVersion"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Destroys a secret version's value irrecoverably.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "secrets.secret_versions.destroy",
        "x-sylphx-permission": "secrets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/secrets/{secret}/secret_versions/{secret_version}:disable": {
      "post": {
        "description": "Disables a secret version: bindings stop delivering it.",
        "operationId": "secrets_secret_versions_disable",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret_version",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Disable only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without changing anything.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.SecretVersion"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Disables a secret version: bindings stop delivering it.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "secrets.secret_versions.disable",
        "x-sylphx-permission": "secrets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/secrets/{secret}/secret_versions/{secret_version}:enable": {
      "post": {
        "description": "Enables a disabled secret version.",
        "operationId": "secrets_secret_versions_enable",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "secret_version",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Enable only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without changing anything.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.secrets.v1.SecretVersion"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Enables a disabled secret version.",
        "tags": [
          "secrets"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "secrets.secret_versions.enable",
        "x-sylphx-permission": "secrets:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/senders": {
      "get": {
        "description": "Lists senders.",
        "operationId": "notify_senders_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListSendersResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists senders.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.senders.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a sender.",
        "operationId": "notify_senders_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sender id, the final name segment; the server assigns one when empty.",
            "in": "query",
            "name": "sender_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Sender"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Sender"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a sender.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "notify.senders.create",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/senders/{sender}": {
      "delete": {
        "description": "Deletes a sender.",
        "operationId": "notify_senders_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "sender",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the sender does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a sender.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.senders.delete",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a sender.",
        "operationId": "notify_senders_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "sender",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Sender"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a sender.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.senders.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a sender.",
        "operationId": "notify_senders_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "sender",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the sender when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Sender"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Sender"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a sender.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.senders.update",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/senders/{sender}:verify": {
      "post": {
        "description": "Re-checks the sender's registration or credentials now.",
        "operationId": "notify_senders_verify",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "sender",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Sender"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Re-checks the sender's registration or credentials now.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "RATE_LIMITED"
        ],
        "x-sylphx-method": "notify.senders.verify",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/services": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists services in a environment.",
        "operationId": "hosting_services_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.hosting.v1.ListServicesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists services in a environment.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "hosting.services.list",
        "x-sylphx-permission": "hosting:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a service. The Operation is done when the controller settles it.",
        "operationId": "hosting_services_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "service_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.hosting.v1.Service"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a service. The Operation is done when the controller settles it.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.hosting.v1.Service"
        },
        "x-sylphx-method": "hosting.services.create",
        "x-sylphx-permission": "hosting:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/services/{service}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a service.",
        "operationId": "hosting_services_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "service",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete every child Resource; without it a parent with children fails\nwith FAILED_PRECONDITION.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a service.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "hosting.services.delete",
        "x-sylphx-permission": "hosting:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a service.",
        "operationId": "hosting_services_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "service",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.hosting.v1.Service"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a service.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "hosting.services.get",
        "x-sylphx-permission": "hosting:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates a service.",
        "operationId": "hosting_services_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "service",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.hosting.v1.Service"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a service.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.hosting.v1.Service"
        },
        "x-sylphx-method": "hosting.services.update",
        "x-sylphx-permission": "hosting:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/services/{service}/service_rollouts": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists rollouts in a service.",
        "operationId": "hosting_service_rollouts_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "service",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.hosting.v1.ListServiceRolloutsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists rollouts in a service.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "hosting.service_rollouts.list",
        "x-sylphx-permission": "hosting:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a rollout.",
        "operationId": "hosting_service_rollouts_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "service",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "rollout_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.hosting.v1.Rollout"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.hosting.v1.Rollout"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a rollout.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-method": "hosting.service_rollouts.create",
        "x-sylphx-permission": "hosting:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/services/{service}/service_rollouts/{rollout}": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a rollout.",
        "operationId": "hosting_service_rollouts_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "service",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "rollout",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.hosting.v1.Rollout"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a rollout.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "hosting.service_rollouts.get",
        "x-sylphx-permission": "hosting:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/services/{service}/service_rollouts/{rollout}:abort": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nStops a Rollout; the cells it reached return to the previous Release.",
        "operationId": "hosting_service_rollouts_abort",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "service",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "rollout",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without acting.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.hosting.v1.Rollout"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Stops a Rollout; the cells it reached return to the previous Release.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "hosting.service_rollouts.abort",
        "x-sylphx-permission": "hosting:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/services/{service}/service_rollouts/{rollout}:pause": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nHolds a Rollout at its current wave.",
        "operationId": "hosting_service_rollouts_pause",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "service",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "rollout",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without acting.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.hosting.v1.Rollout"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Holds a Rollout at its current wave.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "hosting.service_rollouts.pause",
        "x-sylphx-permission": "hosting:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/services/{service}/service_rollouts/{rollout}:resume": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nResumes a paused Rollout.",
        "operationId": "hosting_service_rollouts_resume",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "service",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "rollout",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Act only if the current etag matches.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Validate without acting.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.hosting.v1.Rollout"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Resumes a paused Rollout.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "hosting.service_rollouts.resume",
        "x-sylphx-permission": "hosting:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/snapshots": {
      "get": {
        "description": "Lists snapshots in a environment.",
        "operationId": "sandboxes_snapshots_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.ListSnapshotsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists snapshots in a environment.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "sandboxes.snapshots.list",
        "x-sylphx-permission": "sandboxes:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Captures a running lease's disk as a snapshot.",
        "operationId": "sandboxes_snapshots_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "snapshot_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.sandboxes.v1.Snapshot"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Snapshot"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "501": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Captures a running lease's disk as a snapshot.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RESOURCE_ALREADY_EXISTS",
          "RESOURCE_NOT_FOUND",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "UNIMPLEMENTED"
        ],
        "x-sylphx-method": "sandboxes.snapshots.create",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/snapshots/{snapshot}": {
      "delete": {
        "description": "Deletes a snapshot.",
        "operationId": "sandboxes_snapshots_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "snapshot",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Snapshot"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a snapshot.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "sandboxes.snapshots.delete",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a snapshot.",
        "operationId": "sandboxes_snapshots_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "snapshot",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Snapshot"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a snapshot.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "sandboxes.snapshots.get",
        "x-sylphx-permission": "sandboxes:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/source_maps": {
      "get": {
        "description": "Lists source maps, newest first; filter by `release`.",
        "operationId": "observability_source_maps_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many, up to 100.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "The `next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter; `release = \"…\"` only.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.ListSourceMapsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists source maps, newest first; filter by `release`.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "observability.source_maps.list",
        "x-sylphx-permission": "observability:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Uploads a source map for one release and minified file. Uploading the\nsame release and file again replaces it.",
        "operationId": "observability_source_maps_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.observability.v1.SourceMap"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.SourceMap"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Uploads a source map for one release and minified file. Uploading the same release and file again replaces it.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "observability.source_maps.create",
        "x-sylphx-permission": "observability:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/source_maps/{source_map}": {
      "get": {
        "description": "Gets a source map (without its content).",
        "operationId": "observability_source_maps_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "source_map",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.SourceMap"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a source map (without its content).",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "observability.source_maps.get",
        "x-sylphx-permission": "observability:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/spaces": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists spaces.",
        "operationId": "knowledge_spaces_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.ListSpacesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists spaces.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "knowledge.spaces.list",
        "x-sylphx-permission": "knowledge:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a space.",
        "operationId": "knowledge_spaces_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The space id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "space_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.knowledge.v1.Space"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.Space"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a space.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "knowledge.spaces.create",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/spaces/{space}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a space. A space that still holds records is refused with\n`INVALID_STATE` unless `force` is set, which deletes its episodes and\nfacts too.",
        "operationId": "knowledge_spaces_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the space does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete the space's episodes and facts; without it, a space that\nholds records is refused with `INVALID_STATE`.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a space. A space that still holds records is refused with `INVALID_STATE` unless `force` is set, which deletes its episodes and facts too.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.spaces.delete",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a space.",
        "operationId": "knowledge_spaces_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.Space"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a space.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "knowledge.spaces.get",
        "x-sylphx-permission": "knowledge:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates a space.",
        "operationId": "knowledge_spaces_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the space when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.knowledge.v1.Space"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.Space"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a space.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.spaces.update",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/spaces/{space}/episodes": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists a space's episodes, newest first. The filter is limited to\n`kind` and `extraction`.",
        "operationId": "knowledge_episodes_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, limited to `kind` and `extraction`; for example\n`kind = EPISODE_KIND_NOTE AND extraction = EXTRACTION_DONE`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.ListEpisodesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a space's episodes, newest first. The filter is limited to `kind` and `extraction`.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "knowledge.episodes.list",
        "x-sylphx-permission": "knowledge:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nRecords an episode and returns at once (`remember`); extraction reads\nit afterwards.",
        "operationId": "knowledge_episodes_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The episode id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "episode_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Record the episode without extraction, for content that is already\nstructured or must not be read by a model.",
            "in": "query",
            "name": "skip_extraction",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.knowledge.v1.Episode"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.Episode"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Records an episode and returns at once (`remember`); extraction reads it afterwards.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "RATE_LIMITED",
          "SPEND_LIMIT_REACHED",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.episodes.create",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/spaces/{space}/episodes/{episode}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes an episode, the facts that cite only it, and its search and\nembedding entries; facts that also cite other episodes are re-scored.",
        "operationId": "knowledge_episodes_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "episode",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the episode does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes an episode, the facts that cite only it, and its search and embedding entries; facts that also cite other episodes are re-scored.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.episodes.delete",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets an episode.",
        "operationId": "knowledge_episodes_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "episode",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.Episode"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an episode.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "knowledge.episodes.get",
        "x-sylphx-permission": "knowledge:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/spaces/{space}/relations": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists a space's facts. The filter is limited to `subject`, `predicate`,\n`object` and `provenance.channel`; superseded facts are listed only with\n`show_superseded`.",
        "operationId": "knowledge_relations_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, limited to `subject`, `predicate`, `object` and\n`provenance.channel`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List facts as they were valid at this time, including facts closed\nsince; default now.",
            "in": "query",
            "name": "valid_time",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Also list facts that a newer record replaced.",
            "in": "query",
            "name": "show_superseded",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.ListRelationsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists a space's facts. The filter is limited to `subject`, `predicate`, `object` and `provenance.channel`; superseded facts are listed only with `show_superseded`.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "knowledge.relations.list",
        "x-sylphx-permission": "knowledge:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nRecords a fact in a space (`relate`). A fact that contradicts a current\none with the same subject and a single-valued predicate closes the older\nfact; nothing is overwritten.",
        "operationId": "knowledge_relations_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The relation id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "relation_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.knowledge.v1.Relation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.Relation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Records a fact in a space (`relate`). A fact that contradicts a current one with the same subject and a single-valued predicate closes the older fact; nothing is overwritten.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.relations.create",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/spaces/{space}/relations/{relation}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a fact. Deletion is for data that must go; a fact that stopped\nbeing true is closed with `:close`.",
        "operationId": "knowledge_relations_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "relation",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the relation does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a fact. Deletion is for data that must go; a fact that stopped being true is closed with `:close`.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.relations.delete",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a relation.",
        "operationId": "knowledge_relations_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "relation",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.Relation"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a relation.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "knowledge.relations.get",
        "x-sylphx-permission": "knowledge:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/spaces/{space}/relations/{relation}:close": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCloses a fact (`close_fact`): it stopped holding in the world at\n`valid_end_time`. The fact stays readable for questions about the time\nbefore the close.",
        "operationId": "knowledge_relations_close",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "space",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "relation",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Close only if the current etag matches.",
                    "type": "string"
                  },
                  "valid_end_time": {
                    "description": "When the fact stopped holding in the world; default now.",
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.knowledge.v1.Relation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Closes a fact (`close_fact`): it stopped holding in the world at `valid_end_time`. The fact stays readable for questions about the time before the close.",
        "tags": [
          "knowledge"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "knowledge.relations.close",
        "x-sylphx-permission": "knowledge:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/store_connections": {
      "get": {
        "description": "Lists store connections.",
        "operationId": "money_store_connections_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListStoreConnectionsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists store connections.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.store_connections.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a store connection; its credential is sealed and never returned.",
        "operationId": "money_store_connections_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The store connection id, the final name segment.",
            "in": "query",
            "name": "store_connection_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.StoreConnection"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.StoreConnection"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a store connection; its credential is sealed and never returned.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.store_connections.create",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/store_connections/{store_connection}": {
      "delete": {
        "description": "Deletes a store connection and its sealed credential.",
        "operationId": "money_store_connections_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "store_connection",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The ETag the caller read; the delete fails if it changed.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a store connection and its sealed credential.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.store_connections.delete",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a store connection.",
        "operationId": "money_store_connections_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "store_connection",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.StoreConnection"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a store connection.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.store_connections.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a store connection; a new credential replaces the stored one.",
        "operationId": "money_store_connections_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "store_connection",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the store connection when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.StoreConnection"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.StoreConnection"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a store connection; a new credential replaces the stored one.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.store_connections.update",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/store_purchases": {
      "get": {
        "description": "Lists store purchases, newest first.",
        "operationId": "money_store_purchases_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over filterable fields, for example `transaction_id = \"…\"`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListStorePurchasesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists store purchases, newest first.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.store_purchases.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/store_purchases/{store_purchase}": {
      "get": {
        "description": "Gets a store purchase.",
        "operationId": "money_store_purchases_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "store_purchase",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.StorePurchase"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a store purchase.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.store_purchases.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/store_purchases:clientVerify": {
      "post": {
        "description": "Verifies a store purchase for an app with no server: called with the\nenvironment's publishable key (`billing:client`), the subject is an\ninstall id (`inst_` and a UUID), and Money completes the purchase with the\nstore (acknowledges or consumes it) so the app never calls the store's\nserver API. Works only on store connections that set `client_verify`.\nRe-calling returns the same record and grant.",
        "operationId": "money_store_purchases_client_verify",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "account_token": {
                    "description": "The account token the app set at purchase (Play `obfuscatedAccountId`,\nApp Store `appAccountToken`). A consistency check only: it must match\nthe subject's derivation and the store's copy.",
                    "type": "string"
                  },
                  "package_name": {
                    "description": "Google Play: the package name, when the connection covers several.",
                    "type": "string"
                  },
                  "product_id": {
                    "description": "Google Play: the store product id (for a subscription, its id).",
                    "type": "string"
                  },
                  "purchase_token": {
                    "description": "Google Play: the purchase token.",
                    "type": "string"
                  },
                  "signed_transaction": {
                    "description": "App Store: the StoreKit 2 signed transaction (`jwsRepresentation`).",
                    "type": "string"
                  },
                  "store": {
                    "description": "`app_store` or `google_play`.",
                    "type": "string"
                  },
                  "subject": {
                    "$ref": "#/components/schemas/sylphx.money.v1.Subject",
                    "description": "Who bought it: `end_user` of `inst_` and a lower-case UUID."
                  }
                },
                "required": [
                  "subject",
                  "store"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.VerifyStorePurchaseResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Verifies a store purchase for an app with no server: called with the environment's publishable key (`billing:client`), the subject is an install id (`inst_` and a UUID), and Money completes the purchase with the store (acknowledges or consumes it) so the app never calls the store's server API. Works only on store connections that set `client_verify`. Re-calling returns the same record and grant.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RESOURCE_IN_USE",
          "RATE_LIMITED",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "money.store_purchases.client_verify",
        "x-sylphx-permission": "billing:client",
        "x-sylphx-publishable-ok": true,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/store_purchases:verify": {
      "post": {
        "description": "Verifies a store purchase with the store, binds it to the subject, and\nreturns its record and a signed grant. Re-verifying returns the same\nrecord and grant. Called from the app's server with a secret key that\nholds `billing:write`; a publishable key cannot call it.",
        "operationId": "money_store_purchases_verify",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "bundle_id": {
                    "description": "App Store, with `transaction_id`: the app's bundle id.",
                    "type": "string"
                  },
                  "package_name": {
                    "description": "Google Play: the package name, when the connection covers several.",
                    "type": "string"
                  },
                  "product_id": {
                    "description": "Google Play: the store product id (for a subscription, its id).",
                    "type": "string"
                  },
                  "purchase_token": {
                    "description": "Google Play: the purchase token.",
                    "type": "string"
                  },
                  "signed_transaction": {
                    "description": "App Store: the StoreKit 2 signed transaction (`jwsRepresentation`).",
                    "type": "string"
                  },
                  "store": {
                    "description": "`app_store` or `google_play`.",
                    "type": "string"
                  },
                  "subject": {
                    "$ref": "#/components/schemas/sylphx.money.v1.Subject",
                    "description": "Who bought it."
                  },
                  "transaction_id": {
                    "description": "App Store, instead of `signed_transaction`: the transaction id, for apps\non original StoreKit whose receipts carry no signed transaction. Money\nreads the transaction from Apple with the connection's key; Apple's\nsigned answer is the proof.",
                    "type": "string"
                  },
                  "validate_only": {
                    "description": "Verify fully and return the verdict Money would give, without writing\nanything: no record, no subject binding, no Google Play acknowledge or\nconsume, no entitlement, no ledger posting, no event, and no signed\n`grant_token`. Refusals are exactly the ones a real call gives. For\nmoving existing store sales onto Money, by comparing verdicts with the\nseller's own path before switching.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "subject",
                  "store"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.VerifyStorePurchaseResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Verifies a store purchase with the store, binds it to the subject, and returns its record and a signed grant. Re-verifying returns the same record and grant. Called from the app's server with a secret key that holds `billing:write`; a publishable key cannot call it.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RESOURCE_IN_USE",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "money.store_purchases.verify",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/subscriptions": {
      "get": {
        "description": "Lists subscriptions.",
        "operationId": "events_subscriptions_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.ListSubscriptionsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists subscriptions.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "events.subscriptions.list",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a subscription.",
        "operationId": "events_subscriptions_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The subscription id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "subscription_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.events.v1.Subscription"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.Subscription"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a subscription.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "events.subscriptions.create",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/subscriptions/{subscription}": {
      "delete": {
        "description": "Deletes a subscription.",
        "operationId": "events_subscriptions_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the subscription does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a subscription.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.subscriptions.delete",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a subscription.",
        "operationId": "events_subscriptions_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.Subscription"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a subscription.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "events.subscriptions.get",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a subscription.",
        "operationId": "events_subscriptions_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the subscription when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.events.v1.Subscription"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.Subscription"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a subscription.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.subscriptions.update",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/suppressions": {
      "get": {
        "description": "Lists suppressions.",
        "operationId": "notify_suppressions_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListSuppressionsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists suppressions.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.suppressions.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a suppression.",
        "operationId": "notify_suppressions_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The suppression id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "suppression_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Suppression"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Suppression"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a suppression.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "notify.suppressions.create",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/suppressions/{suppression}": {
      "delete": {
        "description": "Deletes a suppression.",
        "operationId": "notify_suppressions_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "suppression",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the suppression does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a suppression.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.suppressions.delete",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a suppression.",
        "operationId": "notify_suppressions_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "suppression",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Suppression"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a suppression.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.suppressions.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/tax_threshold_statuses": {
      "get": {
        "description": "Lists where the environment's consumer sales stand against each\njurisdiction's digital-services tax registration threshold, per its own\nwindow. EU and UK have no threshold and are not tracked.",
        "operationId": "money_tax_threshold_statuses_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListTaxThresholdStatusesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists where the environment's consumer sales stand against each jurisdiction's digital-services tax registration threshold, per its own window. EU and UK have no threshold and are not tracked.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "money.tax_threshold_statuses.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/templates": {
      "get": {
        "description": "Lists templates.",
        "operationId": "notify_templates_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.ListTemplatesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists templates.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "notify.templates.list",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a template.",
        "operationId": "notify_templates_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The template id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "template_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Template"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Template"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a template.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "notify.templates.create",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/templates/{template}": {
      "delete": {
        "description": "Deletes a template.",
        "operationId": "notify_templates_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "template",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the template does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a template.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.templates.delete",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a template.",
        "operationId": "notify_templates_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "template",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Template"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a template.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "notify.templates.get",
        "x-sylphx-permission": "notify:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a template.",
        "operationId": "notify_templates_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "template",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the template when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.notify.v1.Template"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.notify.v1.Template"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a template.",
        "tags": [
          "notify"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "notify.templates.update",
        "x-sylphx-permission": "notify:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/topics": {
      "get": {
        "description": "Lists topics.",
        "operationId": "events_topics_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.ListTopicsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists topics.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "events.topics.list",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a topic.",
        "operationId": "events_topics_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The topic id, the final name segment; the server assigns one when empty.",
            "in": "query",
            "name": "topic_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.events.v1.Topic"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.Topic"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a topic.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "events.topics.create",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/topics/{topic}": {
      "delete": {
        "description": "Deletes a topic.",
        "operationId": "events_topics_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "topic",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the topic does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete the Topic's Subscriptions; without it a Topic with\nSubscriptions fails with INVALID_STATE.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a topic.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.topics.delete",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a topic.",
        "operationId": "events_topics_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "topic",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.Topic"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a topic.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "events.topics.get",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a topic.",
        "operationId": "events_topics_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "topic",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the topic when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.events.v1.Topic"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.Topic"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a topic.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.topics.update",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/topics/{topic}:publish": {
      "post": {
        "description": "Publishes CloudEvents into a Topic, atomically. Replaying the same\n`source` + `id` with the same payload returns the stored event; a\ndifferent payload fails with RESOURCE_ALREADY_EXISTS.",
        "operationId": "events_topics_publish",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "topic",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "events": {
                    "description": "The events, at most 100.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.events.v1.CloudEvent"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "events"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.PublishEventsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Publishes CloudEvents into a Topic, atomically. Replaying the same `source` + `id` with the same payload returns the stored event; a different payload fails with RESOURCE_ALREADY_EXISTS.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "RATE_LIMITED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-method": "events.topics.publish",
        "x-sylphx-permission": "events:publish",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/traces/{trace}": {
      "get": {
        "description": "Gets a trace.",
        "operationId": "observability_traces_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "trace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.Trace"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a trace.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "observability.traces.get",
        "x-sylphx-permission": "observability:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/traces:query": {
      "post": {
        "description": "Queries the environment's traces over a bounded interval, returning\nsummaries without spans.",
        "operationId": "observability_traces_query",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "end_time": {
                    "description": "The interval end; default now.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "filter": {
                    "description": "AIP-160 filter over the typed, allowlisted fields.",
                    "type": "string"
                  },
                  "order_by": {
                    "description": "`time desc` (default) or `time asc`.",
                    "type": "string"
                  },
                  "page_size": {
                    "description": "At most this many; default 100, clamped to 1000.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "page_token": {
                    "description": "`next_page_token` of the previous page; bound to tenant, interval, filter,\nand order.",
                    "type": "string"
                  },
                  "start_time": {
                    "description": "The interval start; required, at most 31 days before `end_time`.",
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "start_time"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.QueryTracesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Queries the environment's traces over a bounded interval, returning summaries without spans.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "observability.traces.query",
        "x-sylphx-permission": "observability:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/traces:writeSpans": {
      "post": {
        "description": "Ingests a batch of spans atomically; a span's parent and time invariants\nare validated. Replay rules are those of WriteLogEntries.",
        "operationId": "observability_traces_write_spans",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "spans": {
                    "description": "The spans, at most 1000.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.observability.v1.Span"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "spans"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.observability.v1.WriteSpansResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Ingests a batch of spans atomically; a span's parent and time invariants are validated. Replay rules are those of WriteLogEntries.",
        "tags": [
          "observability"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "RATE_LIMITED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-method": "observability.traces.write_spans",
        "x-sylphx-permission": "observability:ingest",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_events": {
      "get": {
        "description": "Lists usage events, newest first.",
        "operationId": "money_usage_events_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, for example `subject = \"…\"`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListUsageEventsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists usage events, newest first.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.usage_events.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Records usage directly, only for a meter the merchant marked reservation-optional.",
        "operationId": "money_usage_events_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.UsageEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageEvent"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Records usage directly, only for a meter the merchant marked reservation-optional.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "UNKNOWN_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.usage_events.create",
        "x-sylphx-permission": "billing:metering:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_events:batchIngest": {
      "post": {
        "description": "Records a batch of already-incurred usage from the merchant's own servers\n(Stripe's meter-event model): the caller is a key of the merchant's own org\nholding the exact grant `billing:metering:ingest`, which no wildcard covers,\nand each event names its subject with no subject proof. Each event is keyed\nby its project, meter, meter version and event id: a replay is a no-op\n(`duplicate`), and the same key with different content is a `conflict` and\nnever counted. One result per event, in request order.",
        "operationId": "money_usage_events_batch_ingest",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "usage_events": {
                    "description": "1 to 500 events.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.money.v1.IngestedUsageEvent"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "usage_events"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.BatchIngestUsageEventsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Records a batch of already-incurred usage from the merchant's own servers (Stripe's meter-event model): the caller is a key of the merchant's own org holding the exact grant `billing:metering:ingest`, which no wildcard covers, and each event names its subject with no subject proof. Each event is keyed by its project, meter, meter version and event id: a replay is a no-op (`duplicate`), and the same key with different content is a `conflict` and never counted. One result per event, in request order.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "UNKNOWN_FIELD",
          "INVALID_STATE"
        ],
        "x-sylphx-method": "money.usage_events.batch_ingest",
        "x-sylphx-permission": "billing:metering:ingest",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_events:checkStanding": {
      "post": {
        "description": "Reads a subject's standing: active, past due or suspended, whether a payment method is on file, headroom and the threshold.",
        "operationId": "money_usage_events_check_standing",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "actor_proof": {
                    "description": "For a customer organization: the acting user's token.",
                    "type": "string"
                  },
                  "subject": {
                    "$ref": "#/components/schemas/sylphx.money.v1.Subject",
                    "description": "Whose standing."
                  },
                  "subject_proof": {
                    "description": "As on UsageReservation: a verified token for the subject.",
                    "type": "string"
                  }
                },
                "required": [
                  "subject",
                  "subject_proof"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageStanding"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Reads a subject's standing: active, past due or suspended, whether a payment method is on file, headroom and the threshold.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "money.usage_events.check_standing",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_invoices": {
      "get": {
        "description": "Lists usage invoices, newest first.",
        "operationId": "money_usage_invoices_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, for example `subject = \"…\"`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListUsageInvoicesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists usage invoices, newest first.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.usage_invoices.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_invoices/{usage_invoice}": {
      "get": {
        "description": "Gets a usage invoice.",
        "operationId": "money_usage_invoices_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "usage_invoice",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageInvoice"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a usage invoice.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.usage_invoices.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_invoices/{usage_invoice}:releaseCollection": {
      "post": {
        "description": "Releases a held invoice for collection, audited with who and why. Grant expiry or replacement never does.",
        "operationId": "money_usage_invoices_release_collection",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "usage_invoice",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "reason": {
                    "description": "Who releases it, and why: both are kept.",
                    "type": "string"
                  }
                },
                "required": [
                  "reason"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageInvoice"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Releases a held invoice for collection, audited with who and why. Grant expiry or replacement never does.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.usage_invoices.release_collection",
        "x-sylphx-permission": "billing:credits.approve",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_meter_prices": {
      "get": {
        "description": "Lists meter prices, newest first; filter by `meter`.",
        "operationId": "money_usage_meter_prices_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, for example `meter = \"tokens\"`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListUsageMeterPricesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists meter prices, newest first; filter by `meter`.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.usage_meter_prices.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Appends a price to a meter's history. It applies from its effective time on and never rewrites usage already rated.",
        "operationId": "money_usage_meter_prices_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.UsageMeterPrice"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageMeterPrice"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Appends a price to a meter's history. It applies from its effective time on and never rewrites usage already rated.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RESOURCE_NOT_FOUND",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.usage_meter_prices.create",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_meters": {
      "get": {
        "description": "Lists usage meters.",
        "operationId": "money_usage_meters_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListUsageMetersResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists usage meters.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.usage_meters.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_meters/{usage_meter}": {
      "get": {
        "description": "Gets a usage meter.",
        "operationId": "money_usage_meters_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "usage_meter",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageMeter"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a usage meter.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.usage_meters.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Creates or updates a usage meter. The unit cannot change once it has recorded usage.",
        "operationId": "money_usage_meters_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "usage_meter",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to change.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.UsageMeter"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageMeter"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates or updates a usage meter. The unit cannot change once it has recorded usage.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "INVALID_STATE",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.usage_meters.update",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_reservations": {
      "post": {
        "description": "Reserves usage before the work starts. Refused with PLAN_LIMIT_REACHED (spend limit, no payment method) or INVALID_STATE (suspended) only while enforcement is on; while it is dark the reservation is granted and the refusal is recorded.",
        "operationId": "money_usage_reservations_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.UsageReservation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageReservation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Reserves usage before the work starts. Refused with PLAN_LIMIT_REACHED (spend limit, no payment method) or INVALID_STATE (suspended) only while enforcement is on; while it is dark the reservation is granted and the refusal is recorded.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "UNKNOWN_FIELD",
          "INVALID_STATE",
          "PLAN_LIMIT_REACHED",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "money.usage_reservations.create",
        "x-sylphx-permission": "billing:metering:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_reservations/{usage_reservation}": {
      "get": {
        "description": "Gets a usage reservation.",
        "operationId": "money_usage_reservations_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "usage_reservation",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageReservation"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a usage reservation.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.usage_reservations.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_reservations/{usage_reservation}:release": {
      "post": {
        "description": "Releases a reservation that used nothing.",
        "operationId": "money_usage_reservations_release",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "usage_reservation",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageReservation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Releases a reservation that used nothing.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.usage_reservations.release",
        "x-sylphx-permission": "billing:metering:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_reservations/{usage_reservation}:settle": {
      "post": {
        "description": "Settles a reservation with what was used; the unused part returns to headroom. A settle after expiry still records the usage.",
        "operationId": "money_usage_reservations_settle",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "usage_reservation",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "occurred_time": {
                    "description": "When the work happened; now when absent.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "quantity_used": {
                    "description": "What was used, in the meter's base unit; 0 to the granted quantity, or\nmore after expiry (the work happened).",
                    "format": "int64",
                    "type": "string"
                  }
                },
                "required": [
                  "quantity_used"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageEvent"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Settles a reservation with what was used; the unused part returns to headroom. A settle after expiry still records the usage.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.usage_reservations.settle",
        "x-sylphx-permission": "billing:metering:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_settings/{usage_settings}": {
      "get": {
        "description": "Gets the environment's usage settings.",
        "operationId": "money_usage_settings_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "usage_settings",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageSettings"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets the environment's usage settings.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.usage_settings.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates the usage settings, the enforcement switch included. A change is recorded with who made it.",
        "operationId": "money_usage_settings_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "usage_settings",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to change.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.UsageSettings"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageSettings"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates the usage settings, the enforcement switch included. A change is recorded with who made it.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.usage_settings.update",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_tiers": {
      "get": {
        "description": "Lists usage tiers.",
        "operationId": "money_usage_tiers_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, for example `subject = \"…\"`.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListUsageTiersResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists usage tiers.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.usage_tiers.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/usage_tiers/{usage_tier}": {
      "patch": {
        "description": "Creates or updates a usage tier.",
        "operationId": "money_usage_tiers_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "usage_tier",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to change.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.UsageTier"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.UsageTier"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates or updates a usage tier.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.usage_tiers.update",
        "x-sylphx-permission": "billing:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/volumes": {
      "get": {
        "description": "Lists volumes in a environment.",
        "operationId": "sandboxes_volumes_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.ListVolumesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists volumes in a environment.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "sandboxes.volumes.list",
        "x-sylphx-permission": "sandboxes:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a volume.",
        "operationId": "sandboxes_volumes_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "volume_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.sandboxes.v1.Volume"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Volume"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a volume.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "sandboxes.volumes.create",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/volumes/{volume}": {
      "delete": {
        "description": "Deletes a volume and destroys its data. Refused RESOURCE_IN_USE while it\nis attached.",
        "operationId": "sandboxes_volumes_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "volume",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Volume"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a volume and destroys its data. Refused RESOURCE_IN_USE while it is attached.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "RESOURCE_IN_USE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "sandboxes.volumes.delete",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a volume.",
        "operationId": "sandboxes_volumes_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "volume",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Volume"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a volume.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "sandboxes.volumes.get",
        "x-sylphx-permission": "sandboxes:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a volume: grows `spec.size_gib` and edits metadata.",
        "operationId": "sandboxes_volumes_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "volume",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.sandboxes.v1.Volume"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Volume"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a volume: grows `spec.size_gib` and edits metadata.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "sandboxes.volumes.update",
        "x-sylphx-permission": "sandboxes:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/webhook_endpoints": {
      "get": {
        "description": "Lists webhook endpoints.",
        "operationId": "events_webhook_endpoints_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.ListWebhookEndpointsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists webhook endpoints.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "events.webhook_endpoints.list",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a webhook endpoint.",
        "operationId": "events_webhook_endpoints_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The webhook endpoint id, the final name segment; the server assigns one\nwhen empty.",
            "in": "query",
            "name": "webhook_endpoint_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.events.v1.WebhookEndpoint"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.WebhookEndpoint"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a webhook endpoint.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "events.webhook_endpoints.create",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/webhook_endpoints/{webhook_endpoint}": {
      "delete": {
        "description": "Deletes a webhook endpoint.",
        "operationId": "events_webhook_endpoints_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "webhook_endpoint",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the webhook endpoint does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete the endpoint's delivery records and the Subscriptions that\ntarget it.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a webhook endpoint.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.webhook_endpoints.delete",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a webhook endpoint.",
        "operationId": "events_webhook_endpoints_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "webhook_endpoint",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.WebhookEndpoint"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a webhook endpoint.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "events.webhook_endpoints.get",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a webhook endpoint.",
        "operationId": "events_webhook_endpoints_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "webhook_endpoint",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the webhook endpoint when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.events.v1.WebhookEndpoint"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.WebhookEndpoint"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a webhook endpoint.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.webhook_endpoints.update",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/webhook_endpoints/{webhook_endpoint}/webhook_deliveries": {
      "get": {
        "description": "Lists webhook deliveries.",
        "operationId": "events_webhook_deliveries_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "webhook_endpoint",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.ListWebhookDeliveriesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists webhook deliveries.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "events.webhook_deliveries.list",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/webhook_endpoints/{webhook_endpoint}/webhook_deliveries/{webhook_delivery}": {
      "get": {
        "description": "Gets a webhook delivery.",
        "operationId": "events_webhook_deliveries_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "webhook_endpoint",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "webhook_delivery",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.WebhookDelivery"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a webhook delivery.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "events.webhook_deliveries.get",
        "x-sylphx-permission": "events:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/webhook_endpoints/{webhook_endpoint}/webhook_deliveries/{webhook_delivery}:replay": {
      "post": {
        "description": "Redelivers one delivery now, as a new attempt.",
        "operationId": "events_webhook_deliveries_replay",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "webhook_endpoint",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "webhook_delivery",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.WebhookDelivery"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Redelivers one delivery now, as a new attempt.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.webhook_deliveries.replay",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/webhook_endpoints/{webhook_endpoint}:replay": {
      "post": {
        "description": "Redelivers every dead-lettered delivery to the endpoint created in a time\nrange, each as a new attempt.",
        "operationId": "events_webhook_endpoints_replay",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "webhook_endpoint",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "end_time": {
                    "description": "Replay deliveries created before this time; default now.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "start_time": {
                    "description": "Replay deliveries created at or after this time.",
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "start_time"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.ReplayWebhookEndpointResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Redelivers every dead-lettered delivery to the endpoint created in a time range, each as a new attempt.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.webhook_endpoints.replay",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/webhook_endpoints/{webhook_endpoint}:rotateSecret": {
      "post": {
        "description": "Replaces the endpoint's signing secret and returns the new one, once\n(`status.signing_secret`). For 24 hours deliveries carry a signature with\neach secret, so a receiver can switch without dropping one.",
        "operationId": "events_webhook_endpoints_rotate_secret",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "webhook_endpoint",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "etag": {
                    "description": "Rotate only if the current etag matches.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.WebhookEndpoint"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Replaces the endpoint's signing secret and returns the new one, once (`status.signing_secret`). For 24 hours deliveries carry a signature with each secret, so a receiver can switch without dropping one.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.webhook_endpoints.rotate_secret",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/webhook_endpoints/{webhook_endpoint}:test": {
      "post": {
        "description": "Sends a test event (`type` `sylphx.webhook.test`) to the endpoint alone,\nthrough the same signing, retries, and delivery log as any other event.",
        "operationId": "events_webhook_endpoints_test",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "webhook_endpoint",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.events.v1.TestWebhookEndpointResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Sends a test event (`type` `sylphx.webhook.test`) to the endpoint alone, through the same signing, retries, and delivery log as any other event.",
        "tags": [
          "events"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "events.webhook_endpoints.test",
        "x-sylphx-permission": "events:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/workflows": {
      "get": {
        "description": "Lists workflows.",
        "operationId": "workflows_workflows_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.ListWorkflowsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists workflows.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "workflows.workflows.list",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Creates a workflow.",
        "operationId": "workflows_workflows_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The workflow id, the final name segment; the server assigns one when\nempty.",
            "in": "query",
            "name": "workflow_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.workflows.v1.Workflow"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.Workflow"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a workflow.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "workflows.workflows.create",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/workflows/{workflow}": {
      "delete": {
        "description": "Deletes a workflow.",
        "operationId": "workflows_workflows_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workflow",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the workflow does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also cancel and delete the Workflow's Runs and Schedules; without it a\nWorkflow with open Runs or Schedules fails with INVALID_STATE.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a workflow.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "workflows.workflows.delete",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a workflow.",
        "operationId": "workflows_workflows_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workflow",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.Workflow"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a workflow.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "workflows.workflows.get",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Updates a workflow.",
        "operationId": "workflows_workflows_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workflow",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the workflow when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.workflows.v1.Workflow"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.Workflow"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a workflow.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "workflows.workflows.update",
        "x-sylphx-permission": "workflows:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/workflows/{workflow}/runs": {
      "get": {
        "description": "Lists runs.",
        "operationId": "workflows_runs_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workflow",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.ListRunsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists runs.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "workflows.runs.list",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Starts a Run of a Workflow, now or after `start_delay` or at\n`schedule_time`. `run_id` is the caller's key: the same key and intent\nreturn the same Run, a changed intent is refused.\nAn end user's session may call it on a Workflow whose `callers` is\n`USERS` when the session holds the Workflow's `permission`.",
        "operationId": "workflows_runs_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workflow",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The run id, the final name segment; the server assigns one when empty.",
            "in": "query",
            "name": "run_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.workflows.v1.Run"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.Run"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Starts a Run of a Workflow, now or after `start_delay` or at `schedule_time`. `run_id` is the caller's key: the same key and intent return the same Run, a changed intent is refused. An end user's session may call it on a Workflow whose `callers` is `USERS` when the session holds the Workflow's `permission`.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "workflows.runs.create",
        "x-sylphx-permission": "workflows:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/workflows/{workflow}/runs/{run}": {
      "get": {
        "description": "Gets a run.",
        "operationId": "workflows_runs_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workflow",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.Run"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a run.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "workflows.runs.get",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/workflows/{workflow}/runs/{run}:cancel": {
      "post": {
        "description": "Requests cancellation. Timers and waits stop; a running invocation is not\ninterrupted: the handler receives one final invocation with `cancel:\ntrue`, and the Run ends `cancelled` when it answers.\nAn end user's session may call it on a Workflow whose `callers` is\n`USERS` when the session holds the Workflow's `permission`.",
        "operationId": "workflows_runs_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workflow",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "reason": {
                    "description": "Why the Run is cancelled.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.Run"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Requests cancellation. Timers and waits stop; a running invocation is not interrupted: the handler receives one final invocation with `cancel: true`, and the Run ends `cancelled` when it answers. An end user's session may call it on a Workflow whose `callers` is `USERS` when the session holds the Workflow's `permission`.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "workflows.runs.cancel",
        "x-sylphx-permission": "workflows:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/workflows/{workflow}/runs/{run}:readHistory": {
      "get": {
        "description": "Reads a page of the Run's immutable history, projected to Sylphx events.",
        "operationId": "workflows_runs_read_history",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workflow",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 100, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.ReadRunHistoryResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Reads a page of the Run's immutable history, projected to Sylphx events.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "workflows.runs.read_history",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/workflows/{workflow}/runs/{run}:signal": {
      "post": {
        "description": "Sends a named signal to a running Run; a `wait` op for that name resumes\nwith its payload. A signal to a closed Run fails with INVALID_STATE.\nAn end user's session may call it on a Workflow whose `callers` is\n`USERS` when the session holds the Workflow's `permission`.",
        "operationId": "workflows_runs_signal",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workflow",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "payload": {
                    "additionalProperties": true,
                    "description": "The signal payload, at most 64 KiB of JSON.",
                    "type": "object"
                  },
                  "signal": {
                    "description": "The signal name the handler waits on.",
                    "type": "string"
                  }
                },
                "required": [
                  "signal"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.Run"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Sends a named signal to a running Run; a `wait` op for that name resumes with its payload. A signal to a closed Run fails with INVALID_STATE. An end user's session may call it on a Workflow whose `callers` is `USERS` when the session holds the Workflow's `permission`.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "workflows.runs.signal",
        "x-sylphx-permission": "workflows:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/workflows/{workflow}/runs/{run}:wait": {
      "post": {
        "description": "Waits up to `timeout` (at most 60s) for the Run to close, then returns it,\nclosed or not. Its short name is `result`: the closed Run carries the\nhandler's output or error.\nAn end user's session may call it on a Workflow whose `callers` is\n`USERS` when the session holds the Workflow's `permission`.",
        "operationId": "workflows_runs_wait",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workflow",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "run",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "timeout": {
                    "description": "How long to wait; default 30s, at most 60s.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.Run"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Waits up to `timeout` (at most 60s) for the Run to close, then returns it, closed or not. Its short name is `result`: the closed Run carries the handler's output or error. An end user's session may call it on a Workflow whose `callers` is `USERS` when the session holds the Workflow's `permission`.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "workflows.runs.wait",
        "x-sylphx-permission": "workflows:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/envs/{env}/workflows/{workflow}/runs:startBatch": {
      "post": {
        "description": "Starts a batch: a parent Run that fans out one child Run per item, each\nwith a stable index and count.",
        "operationId": "workflows_runs_start_batch",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "env",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workflow",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "inputs": {
                    "description": "The inputs, one child Run each; at most 10 000.",
                    "items": {
                      "additionalProperties": true,
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "max_concurrency": {
                    "description": "At most this many children run at once; 0 is the Workflow's limit.",
                    "format": "int32",
                    "type": "integer"
                  }
                },
                "required": [
                  "inputs"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.workflows.v1.StartRunBatchResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Starts a batch: a parent Run that fans out one child Run per item, each with a stable index and count.",
        "tags": [
          "workflows"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "RATE_LIMITED",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "workflows.runs.start_batch",
        "x-sylphx-permission": "workflows:run",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/service_enablements": {
      "get": {
        "description": "Lists the service enablements of a project, one per service.",
        "operationId": "access_service_enablements_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable spec fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ListServiceEnablementsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists the service enablements of a project, one per service.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "access.service_enablements.list",
        "x-sylphx-permission": "access:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/service_enablements/{service_enablement}": {
      "get": {
        "description": "Gets a service enablement.",
        "operationId": "access_service_enablements_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "service_enablement",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ServiceEnablement"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a service enablement.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "access.service_enablements.get",
        "x-sylphx-permission": "access:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Enables or disables a service on a project (`spec.enabled`).",
        "operationId": "access_service_enablements_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "service_enablement",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.access.v1.ServiceEnablement"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.ServiceEnablement"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Enables or disables a service on a project (`spec.enabled`).",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "access.service_enablements.update",
        "x-sylphx-permission": "access:admin",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/source_links": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists source links in a project.",
        "operationId": "hosting_source_links_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.hosting.v1.ListSourceLinksResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists source links in a project.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "hosting.source_links.list",
        "x-sylphx-permission": "hosting:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a source link. The Operation is done when the controller settles\nit.",
        "operationId": "hosting_source_links_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "source_link_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.hosting.v1.SourceLink"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a source link. The Operation is done when the controller settles it.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.hosting.v1.SourceLink"
        },
        "x-sylphx-method": "hosting.source_links.create",
        "x-sylphx-permission": "hosting:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/projects/{project}/source_links/{source_link}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a source link.",
        "operationId": "hosting_source_links_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "source_link",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a source link.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "hosting.source_links.delete",
        "x-sylphx-permission": "hosting:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a source link.",
        "operationId": "hosting_source_links_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "source_link",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.hosting.v1.SourceLink"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a source link.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "hosting.source_links.get",
        "x-sylphx-permission": "hosting:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates a source link.",
        "operationId": "hosting_source_links_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "source_link",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.hosting.v1.SourceLink"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a source link.",
        "tags": [
          "hosting"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.hosting.v1.SourceLink"
        },
        "x-sylphx-method": "hosting.source_links.update",
        "x-sylphx-permission": "hosting:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/revenue": {
      "get": {
        "description": "Gets the org's revenue over a period: totals by day or month, split by\nsource or product, gross or net, in one reporting currency, with the\nbasis of each bucket, the sources that report late, and what has no\nrate yet. Reads only the daily roll-up, bounded by a 5 second statement\ntimeout. For example `sylphx money revenue summary --period mtd\n--split source`.",
        "operationId": "money_revenue_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "`today`, `mtd` (month to date, the default), `month` (with `month`), or\n`range` (with `start_day` and `end_day`). Days are UTC.",
            "in": "query",
            "name": "period",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The month of a `month` period, `YYYY-MM`.",
            "in": "query",
            "name": "month",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The first day of a `range`, `YYYY-MM-DD`.",
            "in": "query",
            "name": "start_day",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The last day of a `range`, inclusive; at most 400 days after the first.",
            "in": "query",
            "name": "end_day",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "`day` (the default) or `month`.",
            "in": "query",
            "name": "group_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "`none` (the default), `source` or `product`.",
            "in": "query",
            "name": "split",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "`net` (the default) or `gross`.",
            "in": "query",
            "name": "amount",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The reporting currency, ISO 4217; default `USD`.",
            "in": "query",
            "name": "currency_code",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.RevenueSummary"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets the org's revenue over a period: totals by day or month, split by source or product, gross or net, in one reporting currency, with the basis of each bucket, the sources that report late, and what has no rate yet. Reads only the daily roll-up, bounded by a 5 second statement timeout. For example `sylphx money revenue summary --period mtd --split source`.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "money.revenue.get",
        "x-sylphx-permission": "revenue:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/revenue_facts": {
      "get": {
        "description": "Lists the org's revenue facts, newest day first, for audit and export.",
        "operationId": "money_revenue_facts_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter, comparisons joined with `AND`: `source = \"…\"` (a source\nid or name), `basis`, `store_kind`, `product_ref` (each `=`), and\n`day >= \"YYYY-MM-DD\"`, `day <= \"YYYY-MM-DD\"`. The days default to the 31\ndays to today (UTC), and span at most 400 days.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListRevenueFactsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "503": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists the org's revenue facts, newest day first, for audit and export.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH",
          "UNAVAILABLE"
        ],
        "x-sylphx-method": "money.revenue_facts.list",
        "x-sylphx-permission": "revenue:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/revenue_sources": {
      "get": {
        "description": "Lists the org's revenue sources, with their freshness.",
        "operationId": "money_revenue_sources_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.ListRevenueSourcesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists the org's revenue sources, with their freshness.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "money.revenue_sources.list",
        "x-sylphx-permission": "revenue:read",
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Registers a revenue source. The `money` source is implicit and never\ncreated here.",
        "operationId": "money_revenue_sources_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The source's id; `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`. Empty: Money\nassigns one.",
            "in": "query",
            "name": "revenue_source_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate only; write nothing.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.RevenueSource"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.RevenueSource"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Registers a revenue source. The `money` source is implicit and never created here.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.revenue_sources.create",
        "x-sylphx-permission": "revenue:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/revenue_sources/{revenue_source}": {
      "delete": {
        "description": "Deletes a revenue source and the facts it reported. The `money` source\ncannot be deleted; pause it instead.",
        "operationId": "money_revenue_sources_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "revenue_source",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The current etag; when set, the delete happens only if it matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate only; delete nothing.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a revenue source and the facts it reported. The `money` source cannot be deleted; pause it instead.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_STATE",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.revenue_sources.delete",
        "x-sylphx-permission": "revenue:write",
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Gets a revenue source, with its freshness. Revenue reporting\n(docs/adr/ADR-01M40HRQT0VSXZ1WANP8M318F2) is org-wide: `revenue:read` or\n`revenue:write`, held by an org-wide key or an org owner's or admin's\nsession only; a project or environment key is refused.",
        "operationId": "money_revenue_sources_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "revenue_source",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.RevenueSource"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a revenue source, with its freshness. Revenue reporting (docs/adr/ADR-01M40HRQT0VSXZ1WANP8M318F2) is org-wide: `revenue:read` or `revenue:write`, held by an org-wide key or an org owner's or admin's session only; a project or environment key is refused.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "money.revenue_sources.get",
        "x-sylphx-permission": "revenue:read",
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Renames, pauses or resumes a revenue source, or changes its settings.",
        "operationId": "money_revenue_sources_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "revenue_source",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to change: `spec.display_name`, `spec.paused`,\n`spec.config`. Empty changes every one the body sets.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate only; write nothing.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.money.v1.RevenueSource"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.RevenueSource"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Renames, pauses or resumes a revenue source, or changes its settings.",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.revenue_sources.update",
        "x-sylphx-permission": "revenue:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/revenue_sources/{revenue_source}:run": {
      "post": {
        "description": "Syncs a revenue source now, or backfills a period. A `money` source\nfills any booked fact its environment's ledger holds and the facts lack;\na paused source, or one whose connector has not shipped yet, is refused\n(`INVALID_STATE`).",
        "operationId": "money_revenue_sources_run",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "revenue_source",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "end_day": {
                    "description": "The last day of a backfill, `YYYY-MM-DD`, inclusive.",
                    "type": "string"
                  },
                  "mode": {
                    "description": "`sync` (default) reads what is new; `backfill` re-reads the period\n`start_day` to `end_day`.",
                    "type": "string"
                  },
                  "start_day": {
                    "description": "The first day of a backfill, `YYYY-MM-DD`.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.money.v1.RunRevenueSourceResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Syncs a revenue source now, or backfills a period. A `money` source fills any booked fact its environment's ledger holds and the facts lack; a paused source, or one whose connector has not shipped yet, is refused (`INVALID_STATE`).",
        "tags": [
          "money"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "money.revenue_sources.run",
        "x-sylphx-permission": "revenue:write",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/scale_sets": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists scale sets in a org.",
        "operationId": "runners_scale_sets_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.runners.v1.ListScaleSetsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists scale sets in a org.",
        "tags": [
          "runners"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "runners.scale_sets.list",
        "x-sylphx-permission": "runners:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a scale set. The Operation is done when the controller settles it.",
        "operationId": "runners_scale_sets_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id segment of the name; the server assigns one when unset.",
            "in": "query",
            "name": "scale_set_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.runners.v1.ScaleSet"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a scale set. The Operation is done when the controller settles it.",
        "tags": [
          "runners"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED",
          "SPEND_LIMIT_REACHED"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.runners.v1.ScaleSet"
        },
        "x-sylphx-method": "runners.scale_sets.create",
        "x-sylphx-permission": "runners:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/scale_sets/{scale_set}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a scale set.",
        "operationId": "runners_scale_sets_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "scale_set",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Succeed when the Resource does not exist.",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Also delete every child Resource; without it a parent with children fails\nwith FAILED_PRECONDITION.",
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a scale set.",
        "tags": [
          "runners"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "google.protobuf.Empty"
        },
        "x-sylphx-method": "runners.scale_sets.delete",
        "x-sylphx-permission": "runners:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a scale set.",
        "operationId": "runners_scale_sets_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "scale_set",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.runners.v1.ScaleSet"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a scale set.",
        "tags": [
          "runners"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "runners.scale_sets.get",
        "x-sylphx-permission": "runners:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates a scale set.",
        "operationId": "runners_scale_sets_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "scale_set",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Create the Resource when it does not exist (declarative upsert).",
            "in": "query",
            "name": "allow_missing",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.runners.v1.ScaleSet"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.common.v1.Operation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a scale set.",
        "tags": [
          "runners"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-lro": {
          "metadata": "sylphx.common.v1.OperationProgress",
          "response": "sylphx.runners.v1.ScaleSet"
        },
        "x-sylphx-method": "runners.scale_sets.update",
        "x-sylphx-permission": "runners:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/scale_sets/{scale_set}/runners": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists runners in a scale set.",
        "operationId": "runners_runners_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "scale_set",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.runners.v1.ListRunnersResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists runners in a scale set.",
        "tags": [
          "runners"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "runners.runners.list",
        "x-sylphx-permission": "runners:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/scale_sets/{scale_set}/runners/{runner}": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a runner.",
        "operationId": "runners_runners_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "scale_set",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "runner",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.runners.v1.Runner"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a runner.",
        "tags": [
          "runners"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "runners.runners.get",
        "x-sylphx-permission": "runners:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/trust_policies": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists an org's trust policies.",
        "operationId": "broker_trust_policies_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.broker.v1.ListTrustPoliciesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists an org's trust policies.",
        "tags": [
          "broker"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "broker.trust_policies.list",
        "x-sylphx-permission": "broker:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nCreates a trust policy.",
        "operationId": "broker_trust_policies_create",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the new trust policy, `^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$`; the server assigns one when\nempty.",
            "in": "query",
            "name": "trust_policy_id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.broker.v1.TrustPolicy"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.broker.v1.TrustPolicy"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "402": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Creates a trust policy.",
        "tags": [
          "broker"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "RESOURCE_ALREADY_EXISTS",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS",
          "PLAN_LIMIT_REACHED"
        ],
        "x-sylphx-method": "broker.trust_policies.create",
        "x-sylphx-permission": "broker:admin",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/trust_policies/{trust_policy}": {
      "delete": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nDeletes a trust policy.",
        "operationId": "broker_trust_policies_delete",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "trust_policy",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Delete only if the current etag matches.",
            "in": "query",
            "name": "etag",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Validate without deleting anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Deletes a trust policy.",
        "tags": [
          "broker"
        ],
        "x-sylphx-effect": "destructive",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "ETAG_MISMATCH",
          "INVALID_STATE",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "broker.trust_policies.delete",
        "x-sylphx-permission": "broker:admin",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a trust policy.",
        "operationId": "broker_trust_policies_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "trust_policy",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.broker.v1.TrustPolicy"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a trust policy.",
        "tags": [
          "broker"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "broker.trust_policies.get",
        "x-sylphx-permission": "broker:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      },
      "patch": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nUpdates a trust policy.",
        "operationId": "broker_trust_policies_update",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "trust_policy",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fields to write; unset writes every populated field.",
            "in": "query",
            "name": "update_mask",
            "required": false,
            "schema": {
              "description": "Comma-separated field paths.",
              "type": "string"
            }
          },
          {
            "description": "Validate and return the result without writing anything.",
            "in": "query",
            "name": "validate_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/sylphx.broker.v1.TrustPolicy"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.broker.v1.TrustPolicy"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "409": {
            "$ref": "#/components/responses/Problem"
          },
          "422": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Updates a trust policy.",
        "tags": [
          "broker"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "UNKNOWN_FIELD",
          "INVALID_FIELD",
          "ETAG_MISMATCH",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_IN_PROGRESS"
        ],
        "x-sylphx-method": "broker.trust_policies.update",
        "x-sylphx-permission": "broker:admin",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/trust_policies/{trust_policy}:exchangeToken": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nExchanges the caller's workload identity for a short-lived provider\ncredential under a trust policy (RFC 8693 token exchange). The\ncredential is narrowed to the request and cached per installation and\npermission set; a permission the Connection lacks is PERMISSION_DENIED\nwith reason `CapabilityMissing`, never an outage.",
        "operationId": "broker_trust_policies_exchange_token",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "trust_policy",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "permissions": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "The permissions this call needs, at most the policy's; empty means the\npolicy's.",
                    "type": "object"
                  },
                  "repositories": {
                    "description": "The repositories this call needs, at most the policy's; empty means the\npolicy's.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "subject_token": {
                    "description": "The caller's identity: a SPIFFE JWT-SVID or an Access-issued workload\nOIDC token, with audience `broker.sylphx.com`.",
                    "type": "string",
                    "x-sylphx-sensitive": true
                  },
                  "ttl": {
                    "description": "How long the credential should live, at most the policy's `max_ttl`.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  }
                },
                "required": [
                  "subject_token"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.broker.v1.ExchangeTokenResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "429": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Exchanges the caller's workload identity for a short-lived provider credential under a trust policy (RFC 8693 token exchange). The credential is narrowed to the request and cached per installation and permission set; a permission the Connection lacks is PERMISSION_DENIED with reason `CapabilityMissing`, never an outage.",
        "tags": [
          "broker"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND",
          "INVALID_FIELD",
          "INVALID_STATE",
          "RATE_LIMITED"
        ],
        "x-sylphx-method": "broker.trust_policies.exchange_token",
        "x-sylphx-permission": "broker:exchange",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/usage_reports": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists an org's usage reports, one per billing period.",
        "operationId": "billing_usage_reports_list",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.ListUsageReportsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists an org's usage reports, one per billing period.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "billing.usage_reports.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/usage_reports/{usage_report}": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets an usage report.",
        "operationId": "billing_usage_reports_get",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "usage_report",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.UsageReport"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets an usage report.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "billing.usage_reports.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/orgs/{org}/usage_reports:query": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nQueries usage over any time range, bucketed and grouped: the usage\nsummary the console charts. Reads rollups; never raw events.",
        "operationId": "billing_usage_reports_query",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "end_time": {
                    "description": "The end of the range, exclusive; at most 400 days after `start_time`.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "granularity": {
                    "$ref": "#/components/schemas/sylphx.billing.v1.UsageGranularity",
                    "description": "The bucket width."
                  },
                  "group_dimensions": {
                    "description": "Dimension keys to group by, for example `model`.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "group_projects": {
                    "description": "Group by project in addition to meter.",
                    "type": "boolean"
                  },
                  "meters": {
                    "description": "Only these meter ids; empty means every meter.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "projects": {
                    "description": "Only these projects; empty means every project.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array",
                    "x-sylphx-resource-reference": "access.sylphx.com/Project"
                  },
                  "start_time": {
                    "description": "The start of the range, inclusive.",
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "start_time",
                  "end_time",
                  "granularity"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.QueryUsageReportsResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Queries usage over any time range, bucketed and grouped: the usage summary the console charts. Reads rollups; never raw events.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "billing.usage_reports.query",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/plans": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nLists the plans the caller can see. Anonymous-readable: the pricing page renders from it.",
        "operationId": "billing_plans_list",
        "parameters": [
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels and filterable fields.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.ListPlansResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists the plans the caller can see. Anonymous-readable: the pricing page renders from it.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "billing.plans.list",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-publishable-ok": true,
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/plans/{plan}": {
      "get": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nGets a plan.",
        "operationId": "billing_plans_get",
        "parameters": [
          {
            "in": "path",
            "name": "plan",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.billing.v1.Plan"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a plan.",
        "tags": [
          "billing"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "billing.plans.get",
        "x-sylphx-permission": "billing:read",
        "x-sylphx-publishable-ok": true,
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/sandbox_shapes": {
      "get": {
        "description": "Lists shapes.",
        "operationId": "sandboxes_sandbox_shapes_list",
        "parameters": [
          {
            "description": "At most this many; default 50, clamped to 1000.",
            "in": "query",
            "name": "page_size",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "`next_page_token` of the previous page.",
            "in": "query",
            "name": "page_token",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-160 filter over labels, filterable fields, and Ready.",
            "in": "query",
            "name": "filter",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AIP-132 ordering over filterable fields.",
            "in": "query",
            "name": "order_by",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.ListSandboxShapesResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Lists shapes.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "PAGE_TOKEN_MISMATCH"
        ],
        "x-sylphx-method": "sandboxes.sandbox_shapes.list",
        "x-sylphx-permission": "sandboxes:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/sandbox_shapes/{shape}": {
      "get": {
        "description": "Gets a shape.",
        "operationId": "sandboxes_sandbox_shapes_get",
        "parameters": [
          {
            "in": "path",
            "name": "shape",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.sandboxes.v1.Shape"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Gets a shape.",
        "tags": [
          "sandboxes"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "sandboxes.sandbox_shapes.get",
        "x-sylphx-permission": "sandboxes:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/search/{index_id}": {
      "post": {
        "description": "Searches an index by text, by vector, or both, best match first, with\nfilters and paging.",
        "operationId": "data_search_query",
        "parameters": [
          {
            "in": "path",
            "name": "index_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "filters": {
                    "description": "Conditions every hit meets, at most 16.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.data.v1.SearchFilter"
                    },
                    "type": "array"
                  },
                  "limit": {
                    "description": "At most this many hits, 1 to 100; unset is 20.",
                    "format": "int32",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "offset": {
                    "description": "Hits to skip; offset + limit is at most 1000.",
                    "format": "int32",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "prefix": {
                    "description": "Whether the query's last word also matches as a word prefix; unset is\ntrue.",
                    "type": "boolean"
                  },
                  "query": {
                    "description": "Text to match, in web-search syntax: words (all must match), \"quoted\nphrases\", `or`, and `-word` to exclude. The last word also matches as a\nword prefix unless `prefix` is false.",
                    "type": "string"
                  },
                  "vector": {
                    "description": "An embedding to match by cosine similarity; its length is the index's\nvector dimensions.",
                    "items": {
                      "type": "number"
                    },
                    "type": "array"
                  },
                  "vector_weight": {
                    "description": "The vector list's share of a hybrid score, 0 to 1; unset is 0.5.",
                    "type": "number"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.data.v1.SearchResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.data.sylphx.com"
          }
        ],
        "summary": "Searches an index by text, by vector, or both, best match first, with filters and paging.",
        "tags": [
          "data"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "data.search.query",
        "x-sylphx-origin": "https://api.data.sylphx.com",
        "x-sylphx-permission": "data:read",
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/subscription-bindings": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nBinds a bus Subscription's matching events to a channel: each event the\nSubscription matches is published to the channel, with the event's\nCloudEvents `type` as the message event and its `data` as the payload. The\nSubscription itself is an Events Resource (`sylphx.events.v1`); this call\nonly names the channel it feeds, and replaces the Subscription's earlier\nbinding.",
        "operationId": "realtime_bindings_create",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "channel": {
                    "description": "The channel its events are published to, `namespace:name`.",
                    "type": "string"
                  },
                  "subscription": {
                    "description": "The Events Subscription's resource name.",
                    "type": "string"
                  }
                },
                "required": [
                  "subscription",
                  "channel"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.realtime.v1.BindSubscriptionResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "404": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.realtime.sylphx.com"
          }
        ],
        "summary": "Binds a bus Subscription's matching events to a channel: each event the Subscription matches is published to the channel, with the event's CloudEvents `type` as the message event and its `data` as the payload. The Subscription itself is an Events Resource (`sylphx.events.v1`); this call only names the channel it feeds, and replaces the Subscription's earlier binding.",
        "tags": [
          "realtime"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD",
          "RESOURCE_NOT_FOUND"
        ],
        "x-sylphx-method": "realtime.bindings.create",
        "x-sylphx-origin": "https://api.realtime.sylphx.com",
        "x-sylphx-permission": "realtime:write",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/tokens:issue": {
      "post": {
        "description": "Not available yet: this method answers 501 UNIMPLEMENTED.\n\nMints a connection or channel token for an end user. The customer's\nserver calls it with the secret key after authenticating the user, and\nhands the token to the client.",
        "operationId": "realtime_tokens_issue",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "grants": {
                    "description": "The channels and capabilities to grant. A channel token takes exactly one\ngrant whose pattern has no `*`. At most 64 grants.",
                    "items": {
                      "$ref": "#/components/schemas/sylphx.realtime.v1.ChannelGrant"
                    },
                    "type": "array"
                  },
                  "kind": {
                    "$ref": "#/components/schemas/sylphx.realtime.v1.TokenKind",
                    "description": "Which kind of token to mint."
                  },
                  "ttl": {
                    "description": "How long the token lives; 1 minute to 24 hours, default 1 hour.",
                    "pattern": "^-?[0-9]+(\\.[0-9]+)?s$",
                    "type": "string"
                  },
                  "user": {
                    "description": "The end user's id. Required for a connection token.",
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "grants"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.realtime.v1.IssueTokenResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Problem"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "403": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "servers": [
          {
            "url": "https://api.realtime.sylphx.com"
          }
        ],
        "summary": "Mints a connection or channel token for an end user. The customer's server calls it with the secret key after authenticating the user, and hands the token to the client.",
        "tags": [
          "realtime"
        ],
        "x-sylphx-effect": "write",
        "x-sylphx-errors": [
          "UNAUTHENTICATED",
          "PERMISSION_DENIED",
          "INVALID_FIELD"
        ],
        "x-sylphx-method": "realtime.tokens.issue",
        "x-sylphx-origin": "https://api.realtime.sylphx.com",
        "x-sylphx-permission": "realtime:token",
        "x-sylphx-served": false,
        "x-sylphx-stage": "preview"
      }
    },
    "/v1/whoami": {
      "get": {
        "description": "Returns the caller: the principal and the scope of the key or token that\nauthenticated this request. Clients fill their org, project, and env\ndefaults from it; every valid key may call it, whatever its scopes.",
        "operationId": "access_whoami",
        "parameters": [
          {
            "$ref": "#/components/parameters/SylphxVersion"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/sylphx.access.v1.WhoamiResponse"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Problem"
          },
          "default": {
            "$ref": "#/components/responses/Problem"
          }
        },
        "summary": "Returns the caller: the principal and the scope of the key or token that authenticated this request. Clients fill their org, project, and env defaults from it; every valid key may call it, whatever its scopes.",
        "tags": [
          "access"
        ],
        "x-sylphx-effect": "read",
        "x-sylphx-errors": [
          "UNAUTHENTICATED"
        ],
        "x-sylphx-method": "access.whoami",
        "x-sylphx-permission": "access:whoami",
        "x-sylphx-publishable-ok": true,
        "x-sylphx-stage": "preview"
      }
    }
  },
  "security": [
    {
      "bearer": []
    }
  ],
  "servers": [
    {
      "url": "https://api.sylphx.com"
    }
  ],
  "tags": [
    {
      "description": "Sylphx Access (preview). AccessService is Sylphx Access: orgs, projects, environments, and API keys.\nAccess is the only writer of these types.",
      "name": "access"
    },
    {
      "description": "Sylphx Agents (preview). AgentsService is Sylphx Agents, the platform's hosted agent runtime\n(ADR-01M495TCCBZGSQ68A4P4G428H2). Apps call it instead of building their\nown agent loop, session store, memory and credential handling.\n\nScopes: `agents:read` and `agents:write` manage agents, versions and\nmemory stores with a secret key. `agents:sessions` runs sessions and reads\nand deletes session and memory records. All methods currently require a\nsecret key. Publishable-key access is deferred until the backend enforces\nend-user ownership of sessions and memories and `end_user_access` on Agents.\nCredential actions capture existing grants; handles are not CRUD resources.",
      "name": "agents"
    },
    {
      "description": "Sylphx AI (preview). AiService is the Resource side of Sylphx AI: the model catalog.\n\nInference is not here. The OpenAI- and Anthropic-compatible routes\n(`/v1/responses`, `/v1/chat/completions`, `/v1/messages`, `/v1/embeddings`,\n`/v1/images/*`, `/v1/audio/*`, `/v1/models`, `/v1/files`) keep their\nindustry wire and stay outside the Resource grammar (ai-inference-surface.md\n§4, resource-api-and-clients.md §4.6); their contract is imported OpenAPI,\nnot proto. Usage is not here either: AI keeps no usage or spend table\n(AI-USAGE-SPEND); its meters are read from Kernel Billing.",
      "name": "ai"
    },
    {
      "description": "Sylphx Artifacts (preview). ArtifactsService is Sylphx Artifacts: immutable content by digest, with\nits SBOM and provenance. Sylphx Build writes them; Release reads them.",
      "name": "artifacts"
    },
    {
      "description": "Sylphx Generated Assets (preview). AssetsService is Sylphx Generated Assets: declare images in code, generate\nthem once, lock them, and serve them from a CDN by content hash. An Asset\nholds a recipe and its variants; `:generate` makes what is missing, and\n`:lock` returns the `assets.lock` text a build commits. Generation happens\nonly in these calls, never at build or run time.",
      "name": "assets"
    },
    {
      "description": "Sylphx Auth (preview). AuthService is Sylphx Auth's management surface: sign-in for a customer's\nown users, their sessions, customer organizations, and OAuth clients.\nSylphx orgs, members, principals, and keys are Sylphx Access, never Auth.\nEnd-user ceremonies (sign-in, recovery, OAuth authorize and token) are\nprotocol endpoints, not Resource methods.",
      "name": "auth"
    },
    {
      "description": "Sylphx Billing (preview). BillingService is Sylphx Billing: the meter and plan catalog, each org's\nbilling account and plan, its invoices, usage, and budget leases. Usage\narrives through each service's spool, never through this API; no request\npath calls Billing.",
      "name": "billing"
    },
    {
      "description": "Sylphx Broker (preview). BrokerService is the credential service: workload identity in, short-lived\nscoped provider credential out.",
      "name": "broker"
    },
    {
      "description": "Sylphx Build (preview). BuildService is Sylphx Build: one command or one image over a commit or an\nuploaded tree, on an offline build lease beside a warm workspace, with one\ncache per project. Images carry an SBOM and signed SLSA provenance, all\nwritten to Sylphx Artifacts by digest.",
      "name": "build"
    },
    {
      "description": "Sylphx Config (preview). ConfigService is Sylphx Config: dynamic configuration and feature flags\nevaluated in each cell from that cell's snapshot.",
      "name": "config"
    },
    {
      "description": "Sylphx Connections (preview). ConnectionsService is Sylphx Connections: Connection Providers and their\ninstallations as Resources.",
      "name": "connections"
    },
    {
      "description": "Sylphx Data (preview). DataPlaneService is the data plane of Sylphx Data: object bytes, key-value\nentries (strings, counters, hashes, lists, and sorted sets), and search\ndocuments in an environment's buckets, KV namespaces, and search indexes. It is\nserved by Data itself at its origin, not by the Resource API, and is called\nwith the environment's secret key (`SYLPHX_API_KEY`); the key's org,\nproject, and environment are the tenant. Every call carries a new\n`Sylphx-Effect-Id`, which the SDK sends and reuses on retries.\n\nThe buckets, namespaces, and indexes themselves are Resources of\nDataService. The\nmessages here are Data's wire format\n(`services/data/proto/sylphx/data/v1/data.proto`), field for field; Data\nanswers ProtoJSON (camelCase names, 64-bit integers and bytes as strings).",
      "name": "data"
    },
    {
      "description": "Sylphx Entitlement (preview). EntitlementService is the read-only view of Sylphx Entitlement. Billing\nwrites it through the Resource store; this service has no mutation.",
      "name": "entitlement"
    },
    {
      "description": "Sylphx Events (preview). EventsService is Sylphx Events: the event bus, queues, outbound and inbound\nwebhooks, and realtime channels. Publish, lease, ack, and delivery run in\neach cell from that cell's snapshot.",
      "name": "events"
    },
    {
      "description": "Sylphx Hosting (preview). HostingService is Sylphx Hosting: Services that build from source or run an\nexisting Artifact, ship as Releases in waves, get a Preview per pull\nrequest, and read their source through a SourceLink.",
      "name": "hosting"
    },
    {
      "description": "Sylphx Keys (preview). KeysService is Sylphx Keys: non-exportable keys on the regional signer.\nCallers use a key; no method returns key material.",
      "name": "keys"
    },
    {
      "description": "Sylphx Knowledge (preview). KnowledgeService is Sylphx Knowledge: one permission-aware knowledge graph\nthat people, apps and agents write while they work and read through search\nwith citations. Episodes are the sources; entities and relations (facts)\nare what is known, each with provenance and valid and recorded time.\nEvery record lives in one Space, and a caller sees a record only through a\nspace it may read, so a context pack or an answer never cites a source the\ncaller cannot open.",
      "name": "knowledge"
    },
    {
      "description": "Sylphx Localization (preview). LocalizationService is Sylphx Localization: translate an app's strings in CI\nwith AI, a translation memory, and a glossary. A Catalog holds the source\nmessages and their translations; `:sync` translates what is new or changed,\nand `:export` returns the files per locale with a QA report. Translation\nhappens only in these calls, never at build or run time.",
      "name": "localization"
    },
    {
      "description": "Sylphx Money (preview). MoneyService is Sylphx Money's customer payments: an app sells to its own\nusers through the stores and processors Money integrates once, and asks one\nquestion on its request path, \"does this subject have this feature\"\n(docs/services/money/customer-payments.md).",
      "name": "money"
    },
    {
      "description": "Sylphx Network (preview). NetworkService is Sylphx Network: verified domains, exact routes served by\neach cell's edge from its snapshot, certificates Sylphx terminates, declared\negress addresses, and private links.",
      "name": "network"
    },
    {
      "description": "Sylphx Notify (preview). NotifyService is Sylphx Notify: messages to people over email, SMS, push,\nand in-app inbox, with preferences, suppression, templates, and broadcasts.\nNotify is built on Sylphx Events as an ordinary customer.",
      "name": "notify"
    },
    {
      "description": "Sylphx Observability (preview). ObservabilityService is Sylphx Observability's log, trace, and error\nsurface: ingest through the emitter-side buffer, tenant-fenced bounded\nqueries, and error-group triage. Observability is only ever a soft\ndependency.",
      "name": "observability"
    },
    {
      "description": "Sylphx Realtime (preview). ChannelService is the Channel API of Sylphx Realtime: the server side that\nconfigures namespaces, publishes, reads history, lists presence, and mints\nthe tokens clients connect with. It is served by the Events service at the\nRealtime origin, not by the Resource API, and is called with the\nenvironment's secret key (`SYLPHX_API_KEY`); the key's org, project and\nenvironment are the tenant. Clients connect with a token over the Sylphx\nchannel protocol v1 (`protocol.proto`).\n\nThe same calls become MCP tools. An agent cannot hold a socket, so\nListMessages with `wait_seconds` is its subscribe.",
      "name": "realtime"
    },
    {
      "description": "Sylphx Release (preview). ReleaseService is Sylphx Release: the only deployable unit and the progress\nof its rollouts. Releases are immutable; there is no Update or Delete.",
      "name": "release"
    },
    {
      "description": "Sylphx Runners (preview). RunnersService is Sylphx Runners: CI runners of a class\n`sylphx-<os>-<size>`, one clean Sandboxes lease per job, registered as scale\nsets on a Sylphx Runners installation. Runners are read-only: GitHub matches\njobs to runners, and Runners reports them.",
      "name": "runners"
    },
    {
      "description": "Sylphx Sandboxes (preview). SandboxesService is Sylphx Sandboxes: isolated machines leased for a bounded\ntime, granted immediately or refused with a typed reason, and destroyed\nbefore anyone else can touch them.\nEvery agent-computer surface is here: exec and files, computer actions that\nmap one-to-one onto the Anthropic computer tool and OpenAI computer-use\nactions and return the post-action screenshot in the same call, CDP, live\nstreams, and human takeover. The streaming guest protocol (E2B envd) is\nserved at `status.endpoints.guest_uri`.",
      "name": "sandboxes"
    },
    {
      "description": "Sylphx Secrets (preview). SecretsService is Sylphx Secrets: write-only, versioned values and the\nbindings that deliver them. Reading a value back is the separate break-glass\npermission `secrets:access`.",
      "name": "secrets"
    },
    {
      "description": "Sylphx Workflows (preview). WorkflowsService is Sylphx Workflows: durable execution, schedules, timers,\nand runs. Workflows is the one writer of these types.",
      "name": "workflows"
    }
  ]
}
